2013-03-12 128 views
0

我使用这个脚本在我的网站:地理位置自动计算路线距离

<script src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script> 
    (function() { 
     var directionsService = new google.maps.DirectionsService(), 
      directionsDisplay = new google.maps.DirectionsRenderer(), 
      createMap = function (start) { 
    var travel = { 
      origin : (start.coords)? new google.maps.LatLng(start.lat, start.lng) : start.address, 
      destination : "Warszawa, al. jerozolimskie 123", 
      travelMode : google.maps.DirectionsTravelMode.DRIVING 
      // Exchanging DRIVING to WALKING above can prove quite amusing :-) 
     }, 
     mapOptions = { 
      zoom: 10, 
      // Default view: downtown Stockholm 
      center : new google.maps.LatLng(59.3325215, 18.0643818), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

    map = new google.maps.Map(document.getElementById("map"), mapOptions); 
    directionsDisplay.setMap(map); 
    directionsDisplay.setPanel(document.getElementById("map-directions")); 
    directionsService.route(travel, function(result, status) { 
     if (status === google.maps.DirectionsStatus.OK) { 
      directionsDisplay.setDirections(result); 
     } 
    }); 
      }; 

      // Check for geolocation support  
      if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function (position) { 
      // Success! 
      createMap({ 
       coords : true, 
       lat : position.coords.latitude, 
       lng : position.coords.longitude 
      }); 
     }, 
     function() { 
      // Gelocation fallback: Defaults to Stockholm, Sweden 
      createMap({ 
       coords : false, 
       address : "Polska, Warszawa" 
      }); 
     } 
    ); 
      } 
      else { 
    // No geolocation fallback: Defaults to Lisbon, Portugal 
    createMap({ 
     coords : false, 
     address : "Polska, Warszawa" 
    }); 
      } 
    })(); 
</script> 

我有问题与haversine公式连接谁计算我的位置和设置位置... 之间的公路距离我不需要任何地图或它的路线 - 只有公里数:) :)

有人帮我这个吗?

非常感谢,

回答

0

我检查了APi,发现你想要什么。

之前

directionsService.route(

一定要设置:

unitSystem来:google.maps.UnitSystem.METRIC

在你旅行 var。

然后在调用路由之后,结果是一个DirectionsResult对象。在那里,您将拥有DirectionRoute数组,其中的DirectionLeg数组具有distance属性。

闻听此事对你的问题应该工作如下:

VAR的结果= result.rows [0] .elements;

var distance = results [0] .distance.text;

distance.text返回“100公里”,其中distance.value只返回“100”,无论您喜欢什么。

当然,这将是更好的遍历这些阵列;)(一定要落实这些检查,因为距离并不总是弥漫,远处可以在某些情况下是未知的)

更多API的信息可以在这里找到:https://developers.google.com/maps/documentation/javascript/directions?hl=en

PS:一定要使用API​​的实际版本V3,生成自己的密钥并使用它。 https://developers.google.com/maps/documentation/javascript/tutorial?hl=en#api_key

+0

我在“var travel = {...}”中添加“unitSystem:google.maps.UnitSystem.METRIC”;添加“var results = result.rows [0] .elements;”和“var distance = results [0] .distance.text;“在启动功能...我想我做错了什么:( – 2013-03-12 13:31:29

+0

结果和距离应该在路由功能内,因为结果var来自那里。我不知道你是否需要使用V3的API,尝试使用alert('x')来调试它;查看问题来自哪里(例如,如果路由返回OK,如果结果填充正确),我需要更多信息来帮助 – Xavjer 2013-03-12 15:02:40

+0

http://goo.gl/tSZRU这工作对我来说!它有点不同,我以前写了 – Xavjer 2013-03-12 15:19:06