0

私はプログラミングが初めてです..2点間の距離を与えるこのコードがありますが、さらに10などの整数を掛ける必要があります..私が取り組んでいるプロジェクトは、2点間の距離を計算し、それに運賃/ Kmを掛けることです. Rs.10/km (インドルピー) のように。したがって、距離が 30 km の場合、運賃は 30*10 = Rs.300 になります。

前もって感謝します

以下はコードです

<script>
var map;
var geocoder;
var bounds = new google.maps.LatLngBounds();
var markersArray = [];
  var origin1 = '';
  var destinationA = '';

  var destinationIcon = 'https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=D|FF0000|000000';

  var originIcon = 'https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=O|FFFF00|000000';


function initialize() {
    var opts = {
      center: new google.maps.LatLng(55.53, 9.4),
      zoom: 10,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

map = new google.maps.Map(document.getElementById('map'), opts);


var fromText = document.getElementById('FAdd');

var options = {
            componentRestrictions: {country: 'in'}
    };var fromAuto = new google.maps.places.Autocomplete(fromText, options);


fromAuto.bindTo('bound', map);


var toText = document.getElementById('TAdd');

var toAuto = new google.maps.places.Autocomplete(toText, options);


toAuto.bindTo('bound', map);


    geocoder = new google.maps.Geocoder();
  }

  function calculateDistances() {
    var service = new google.maps.DistanceMatrixService();
    service.getDistanceMatrix(
      {
        origins: [document.getElementById("FAdd").value],
        destinations: [document.getElementById("TAdd").value],
        travelMode: google.maps.TravelMode.DRIVING,
        unitSystem: google.maps.UnitSystem.METRIC,
        avoidHighways: false,
        avoidTolls: false
      }, callback);
  }

  function callback(response, status) {
    if (status != google.maps.DistanceMatrixStatus.OK) {
      alert('Error was: ' + status);
    } else {
      var origins = response.originAddresses;
      var destinations = response.destinationAddresses;
      var outputDiv = document.getElementById('outputDiv');
      outputDiv.innerHTML = '';
      deleteOverlays();


      for (var i = 0; i < origins.length; i++) {
        var results = response.rows[i].elements;
        addMarker(origins[i], false);
        for (var j = 0; j < results.length; j++) {
          addMarker(destinations[j], true);

        outputDiv.innerHTML += results[j].distance.text  + '<br>'; 

        }
      }
   }
  }

  function addMarker(location, isDestination) {
    var icon;
    if (isDestination) {
      icon = destinationIcon;
    } else {
      icon = originIcon;
    }
    geocoder.geocode({'address': location}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        bounds.extend(results[0].geometry.location);
        map.fitBounds(bounds);
        var marker = new google.maps.Marker({
          map: map,
          position: results[0].geometry.location,
          icon: icon
        });
        markersArray.push(marker);
      } else {
        alert('Geocode was not successful for the following reason: '
          + status);
      }
    });
  }

  function deleteOverlays() {
    if (markersArray) {
      for (i in markersArray) {
        markersArray[i].setMap(null);
      }
      markersArray.length = 0;
    }
  }

</script>
4

1 に答える 1

0

PHP への Ajax 呼び出しを使用していますが、getDistanceMatrix() はまだ使用していませんが、これは簡単に修正できるはずです。まず、起点と終点が常に 1 つだけであることがわかっている場合は、コールバック関数に「for」ループは必要ありません。次に、距離値ではなく距離テキストを取得しています。

function callback(response, status) {
    if (status != google.maps.DistanceMatrixStatus.OK) {
       [...]
    } else {
        deleteOverlays();
        var outputDiv = document.getElementById('outputDiv'),
            origin = response.originAddresses[0],
            destination = response.destinationAddresses[0],
            result = response.rows[0].elements[0],
            distance = result.distance.value,
            text = result.distance.text,
            price = 10 * distance;
        outputDiv.innerHTML = '<p>' + text + ': Rs.' + price + '</p>';
        addMarker(origin, false);
        addMarker(destination, false);
    }

}

私はこれをテストしていないので、おそらく調整する必要があります。( https://developers.google.com/maps/documentation/distancematrix/#DistanceMatrixResponsesを参照)

于 2013-02-28T15:25:32.743 に答える