首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较公路与避免公路距离

比较公路与避免公路距离
EN

Stack Overflow用户
提问于 2014-06-02 13:27:42
回答 1查看 572关注 0票数 1

我想比较一下使用高速公路和避开高速公路时的距离,但我不知道该如何做。我的代码是根据距离计算两点之间的距离和价格。如果选中“公路”复选框,则应计算不同的价格,但如果没有公路,则应保持相同的价格。

这是密码

代码语言:javascript
复制
var directionsDisplay = new google.maps.DirectionsRenderer();
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {

  var myOptions = {
    center: new google.maps.LatLng(43.521573, 16.441015),
    zoom: 5,
    mapTypeID: google.maps.MapTypeId.ROADMAP
  };

  map = new google.maps.Map(document.getElementById('map-canvas'), myOptions);

  directionsDisplay.setMap(map);

  google.maps.event.trigger(map, 'resize');

}

function calcRoute() {
  var start = document.getElementById('start').value;
  var end = document.getElementById('end').value;
  var vehicle = document.getElementById('vehicle').value;

  //var highway = document.getElementById('highway').checked;
  //var round = document.getElementById('return').checked;

  var distanceInput = document.getElementById('distance');
  var timeInput = document.getElementById('time');
  var priceInput = document.getElementById('price');

  var request, price;

  if (document.getElementById('highway').checked) {
    request = {
      origin: start,
      destination: end,
      travelMode: google.maps.TravelMode.DRIVING,
      avoidHighways: false
    };

  } else {
     request = {
      origin: start,
      destination: end,
      travelMode: google.maps.TravelMode.DRIVING,
      avoidHighways: true
    };

  }

  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {

      directionsDisplay.setDirections(response);

      if (document.getElementById('highway').checked)
        dist_highway = response.routes[0].legs[0].distance.value / 1000;
      else
        dist = response.routes[0].legs[0].distance.value / 1000;

      distanceInput.value = response.routes[0].legs[0].distance.value / 1000;

      var hours = parseInt( response.routes[0].legs[0].duration.value / 3600) % 24;
      var minutes = parseInt( response.routes[0].legs[0].duration.value / 60) % 60;
      timeInput.value = hours + "h " + minutes + "m";


      if (vehicle == 'van') {
        if ((response.routes[0].legs[0].distance.value / 1000) < '30' ) {
          price = (response.routes[0].legs[0].distance.value / 1000) * 1.19;
        } else {
          price = (response.routes[0].legs[0].distance.value / 1000) * 0.93;
        }
      } else if (vehicle == 'personal') {
        if ((response.routes[0].legs[0].distance.value / 1000) < '30' ) {
          price = (response.routes[0].legs[0].distance.value / 1000) * 1.32;
        } else {
          price = (response.routes[0].legs[0].distance.value / 1000) * 1.06;
        }
      }

      if (document.getElementById('highway').checked && vehicle == 'personal' ) {
        price *= 1.3;
      } else if (document.getElementById('highway').checked && vehicle == 'van' ) {
        price *= 1.5;
      };

      if (document.getElementById('return').checked) {
        price *= 1.7;

      };

      priceInput.value = price.toFixed(2) + "€";

    }
  });
}


google.maps.event.addDomListener(window, 'load', initialize);

经过AlexB的解释,这是我的职责。问题解决了。

代码语言:javascript
复制
function calcDist(start, end) {
  var requestHighway, request, distHighway, dist;
  var dirService = new google.maps.DirectionsService();

  requestHighway = {
      origin: start,
      destination: end,
      travelMode: google.maps.TravelMode.DRIVING,
      avoidHighways: false
    };

  request = {
      origin: start,
      destination: end,
      travelMode: google.maps.TravelMode.DRIVING,
      avoidHighways: true
    };

  dirService.route(requestHighway, function(response, status) {

    if (status == google.maps.DirectionsStatus.OK) {

      distHighway = response.routes[0].legs[0].distance.value / 1000;
      distHighway = distHighway.toFixed(2);

    }
  });

  dirService.route(request, function(response, status) {

    if (status == google.maps.DirectionsStatus.OK) {

      dist = response.routes[0].legs[0].distance.value / 1000;
      dist = distHighway.toFixed(2);

    }
  });

  if (distHighway - dist == 0) {
    return true;
  } else {
    return false;
  }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-09 07:33:58

经过AlexB的解释,这是我的职责。问题解决了。

代码语言:javascript
复制
function calcDist(start, end) {
  var requestHighway, request, distHighway, dist;
  var dirService = new google.maps.DirectionsService();

  requestHighway = {
      origin: start,
      destination: end,
      travelMode: google.maps.TravelMode.DRIVING,
      avoidHighways: false
    };

  request = {
      origin: start,
      destination: end,
      travelMode: google.maps.TravelMode.DRIVING,
      avoidHighways: true
    };

  dirService.route(requestHighway, function(response, status) {

    if (status == google.maps.DirectionsStatus.OK) {

      distHighway = response.routes[0].legs[0].distance.value / 1000;
      distHighway = distHighway.toFixed(2);

    }
  });

  dirService.route(request, function(response, status) {

    if (status == google.maps.DirectionsStatus.OK) {

      dist = response.routes[0].legs[0].distance.value / 1000;
      dist = distHighway.toFixed(2);

    }
  });

  if (distHighway - dist == 0) {
    return true;
  } else {
    return false;
  }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23995719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档