2017-11-16 10 views
-1

Googleマップの距離マトリックスを使用する私は2つの場所の間の距離があるので、その距離を使用して旅行ゾーンを決定します。Googleマップ距離マトリックス - 出発地と目的地の間の距離を使用して旅行ゾーンを計算する

私が書いた現在のスクリプトは、距離を計算して出力します。私は旅行ゾーンを見つけるために援助が必要です。

jQueryが有効です。

<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap"> 
</script> 

    <script type="text/javascript"> 
     var origin = 'Perth, Australia', 
      destination = 'Two Rocks, Australia', 
      service = new google.maps.DistanceMatrixService(), 
      zone; 

     service.getDistanceMatrix(
      { 
       origins: [origin], 
       destinations: [destination], 
       travelMode: google.maps.TravelMode.DRIVING, 
       avoidHighways: false, 
       avoidTolls: false 
      }, 
      callback 
     ); 

     function callback(response, status) { 
      var orig = document.getElementById("orig"), 
       dest = document.getElementById("dest"), 
       dist = document.getElementById("dist"); 
       zone = document.getElementById("zone"); 

      if(status=="OK") { 
       orig.value = response.destinationAddresses[0]; 
       dest.value = response.originAddresses[0]; 
       dist.value = response.rows[0].elements[0].distance.text; 
      } else { 
       alert("Error: " + status); 
      } 

      if (dist <= 30) { 
       zone = 1; 
      } else if (dist >= 30 && dist < 60) { 
       zone = 2; 
      } else if (dist >= 60 && dist < 90) { 
       zone = 3; 
      } else if (dist >= 90 && dist <= 120) { 
       zone = 4; 
      } else { 
       zone = 'Out of range'; 
      } 
     } 

     </script> 

     <label> 
      <input id="orig" type="hidden"/> 
      <input id="dest" type="hidden" /> 

      Distance: <input id="dist" type="text" value="distance" /> 
      Travel Zone: <input id="zone" type="text" value="zone" /> 

     </label> 
+0

あなたがタイプミスを持っています。 'dist'はHTML要素です。値は(メートル単位で) 'response.rows [0] .elements [0] .distance.value'にあります。 – geocodezip

+0

ありがとうございましたGeocodezipは、distance.textではなくdistance.textを出力していたことを認識しました。 – SBWT

答えて

0

変数は(キロを追加せずに)数

<script src='https://maps.googleapis.com/maps/api/js?key=key'></script> 

    <script type="text/javascript"> 
    var origin = 'Perth, Australia', 
     destination = '<?php echo $suburb; ?>, Australia', 
     service = new google.maps.DistanceMatrixService(); 

    service.getDistanceMatrix(
     { 
      origins: [origin], 
      destinations: [destination], 
      travelMode: google.maps.TravelMode.DRIVING, 
      avoidHighways: false, 
      avoidTolls: false 
     }, 
     callback 
    ); 

    function callback(response, status) { 
     var orig = document.getElementById("orig"), 
      dest = document.getElementById("dest"), 
      dist = document.getElementById("dist"), 
      zone = document.getElementById("zone"); 
      total = document.getElementById("total"); 

     if(status=="OK") { 
      orig.value = response.destinationAddresses[0]; 
      dest.value = response.originAddresses[0]; 
      // return distance in metres 
      dist.value = response.rows[0].elements[0].distance.value; 

      // Use dist.value to calculate travel zone 
      if (dist.value <= 30000) { 
       zone.value = 0; 
      } else if (dist.value >= 30000 && dist.value < 40000) { 
       zone.value = 20; 
      } else if (dist.value >= 40000 && dist.value < 50000) { 
       zone.value = 40; 
      } else if (dist.value >= 50000 && dist.value <= 60000) { 
       zone.value = 80; 
      } else if (dist.value >= 60000 && dist.value <= 70000) { 
       zone.value = 150; 
      } else if (dist.value >= 70000 && dist.value <= 80000) { 
       zone.value = 190; 
      } else { 
       zone.value = 'Out of range'; 
      } 
      total.value = Number(<?php echo $base; ?>) + Number(zone.value); 

     } else { 
      dist.value = 'Unknown Suburb'; 
     } 


    } 

    </script> 

出力変数として距離を取得することを確認してセットアップ:

<input id="orig" type="text"/> 
<input id="dest" type="text" /> 
<input id="dist" type="text" /> 
<input id="zone" type="text" /> 
関連する問題