2013-12-17 71 views
0

我目前有一個DirectionsRenderer函數,適當地路由到我和我的網頁上的字段。路由完成後,我抓取overview_path,然後根據路徑從Fusion Table中加載元素。一旦做到這一點我已經建立了一個偵聽尋找「directions_changed」,這表明一個航點爲這樣的:谷歌路線服務W /航點返回ZERO_RESULTS

google.maps.event.addListener(directionsDisplay, 'directions_changed', function(){ 

     var wypnt = directionsDisplay.getDirections().routes[0].legs[0].via_waypoints.toString().match(/[^()]+/); 
     wypnt.toString().split(","); 
     wypnt = new google.maps.LatLng(wypnt[1],wypnt[0]); 

     var waypoint = []; 

     waypoint.push({ location: wypnt, stopover: true }); 

     route(waypoint); 
    }); 

當我將它傳遞迴路線()函數(與正常工作的功能收件人和發件人字段),我有這部分代碼:

directionService.route(request, function(result, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 

     //do stuff 

    } 
    else { 
       alert("Directions query failed: " + status); 
      } 
    }; 

不幸的是所有我得到的回覆是「:

if(waypoint){ 

    var request = { 
     origin: document.getElementById("search-input-from").value, 
     destination: document.getElementById("search-input-to").value, 
     waypoints: waypoint, 
     optimizeWaypoints: true, 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 
} 
else{ 

    var request = { 
     origin: document.getElementById("search-input-from").value, 
     destination: document.getElementById("search-input-to").value, 
     travelMode: google.maps.DirectionsTravelMode.DRIVING 
    }; 
} 

的代碼的其餘部分是基於關閉if語句如下直銷tions查詢失敗:ZERO_RESULTS「。任何想法爲什麼發生這種情況?我不確定我形成航點的方式是錯誤的還是其他的。

回答

1

的一些問題:

wypnt.toString().split(","); 

這不會有任何效果wypnt,拆分不會修改原始的對象。它必須是:

 wypnt = wypnt.toString().split(","); 

你爲什麼在這裏轉換經度和緯度?

wypnt = new google.maps.LatLng(wypnt[1],wypnt[0]); 

它必須是

wypnt = new google.maps.LatLng(wypnt[0],wypnt[1]); 

最重要的是:你爲什麼這樣做呢?你需要一個數組,將其轉換爲一個字符串,拆分字符串以獲得原始數組。

只需使用:

google.maps.event.addListenerOnce(directionsDisplay, 'directions_changed', 
    function(){ 
    var waypoints=directionsDisplay.getDirections().routes[0] 
        .legs[0].via_waypoints||[]; 
    for(var i=0;i<waypoints.length;++i){ 
     waypoints[i]={stopover:true,location: waypoints[i]} 
    } 
    route(waypoints); 
}); 

但請注意:當你重新繪製路線directions_changed將再次觸發。

+0

首先,感謝您的幫助。我相信LatLng對象會切換Lat和Lng,因此可以在[1]和[0]之間切換。 我的意思是Lng先建立一個LatLng對象(至少我相信是這種情況)。 –

+0

嘗試這種方式我 '未捕獲的錯誤:錯誤屬性:(值無效:(-31.0503894,151.7545473)(以元素錯誤在位置0:(未知屬性)))' via_waypoints帶出了對象顯示爲「(Lat,Long)」,其中LatLng對象以Long,Lat(無括號)形式出現。 –

+0

對不起,我忘記了航點並不簡單LatLng的,看到我編輯的答案。 –

相關問題