Viewing 4 replies - 1 through 4 (of 4 total)
  • I know how to do that but I can’t get the plugin to work, period. It keeps saying:

    Warning: Cannot modify header information – headers already sent by (output started at my-site/wp-content/plugins/wp-distance-calculator/index.php:97) in my-site/wp-includes/pluggable.php on line 1174.

    I do see the error, but i see the shortcode worked as expected.

    Does it has any UI associated for configuring km to miles.

    Any luck on calculating in miles?

    Figured it out.

    If anyone wants to change it to MILES instead of KILOMETERS then you need to edit Index.php and change it to this

    <?php
    /**
     * Plugin Name: WP Distance Calculator
     * Plugin URI: https://phpcodingschool.blogspot.com/
     * Description: This plugin claculates distance between two near by locations.
     * Version: 1.0.0
     * Author: Monika Yadav
     * Author URI: https://phpcodingschool.blogspot.com/
     * License: GPL2
     */
    
    class DistanceWPCalculator
    {
    	public function __construct()
    	{       //action definations
    	        add_shortcode( 'distance_calculator',  array( &$this, 'distanceWPfrontend' ) ); 
    		
    			add_action( 'wp_ajax_nopriv_distancewpcalculator', array( &$this, 'distancewpcalculator_calculate' ) );
    			add_action( 'wp_ajax_distancewpcalculator', array( &$this, 'distancewpcalculator_calculate' ) );
    		
    		    add_action( 'init', array( &$this, 'init' ) );
    	}
    
    	public function init()
    	{
    		wp_enqueue_script( 'distancewpcalculator', plugin_dir_url( __FILE__ ) . 'js/calculatedistance.js', array( 'jquery' ) );
    		wp_localize_script( 'distancewpcalculator', 'DistanceCalculator', array(
    		    'ajaxurl' => admin_url( 'admin-ajax.php' )
    		) );
    		?>
    		<script>
    		var ajaxurl =  "<?php echo admin_url('admin-ajax.php'); ?>";
    		</script>
    		<?php
    		wp_enqueue_style( 'DistanceWPCalculator-Style', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), '0.1', 'screen' );
    	}
    
    	public function distancewpcalculator_calculate()
    	{   
    		// The $_POST contains all the data sent via ajax
    		if ( isset($_POST) ) {
    			 
    		$from = urlencode($_POST['from']);
    		$to = urlencode($_POST['to']);
    		$data = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=$from&destinations=$to&language=en-EN");
    		$data = json_decode($data);
    		$time = 0;
    		$distance = 0;
    			foreach($data->rows[0]->elements as $road) {
    				$time += $road->duration->value;
    				$distance += $road->distance->value;
    			}
    			$time =$time/60;
    			$distance =round($distance/1609);
    			//Output
    			if($distance!=0){
    			
    			echo "<div id='result_generated'>";
    			echo "From: ".$data->origin_addresses[0];
    			echo "<br/>";
    			echo "To: ".$data->destination_addresses[0];
    			echo "<br/>";
    			echo "Time: ".gmdate("H:i", ($time * 60))." hour(s)";
    			echo "<br/>";
    			echo "Distance: ".$distance." miles";
    			echo "</div>";		   
    			}else{
    			echo "Sorry only nearby distance can be calculated."; 
    			}				 
    		   }
    		 
        die();
    	
    	}
    	
    	//Function to display form on front-end
    	public function distanceWPfrontend( $atts ) {
    		
    	?>  
    		<form method = "post" id="calculator" >
    			<div class="DC_title">Distance Calculator</div>
    			<input type="text" id="from" name="from" placeholder="From.."></br>
    			<input type="text" id="to" name="to" placeholder="To.."></br>
    			<input type="button" id="calculate" name="calculate" value="Calculate">
    		</form></br>
    		<div id="result"></div> 
    		<?php
    	}
    	
    	}
    	
    	$distancewpcalculator = new DistanceWPCalculator();
    
    ?>
    
    
Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Calculate using miles?’ is closed to new replies.