2013-03-12 131 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