2016-07-25 16 views
0

我使用Google Maps JavaScript API和this solution獲取地圖上的最近點並顯示它們。將另一個函數的Lat Lat轉換爲Street View圖像API

「PT」 值例如:

38.5803844,-121.50024189999999 

下面是代碼:

function findClosestN(pt,numberOfResults) { 

    var closest = []; 

    for (var i=0; i<gmarkers.length;i++) { 
     gmarkers[i].distance = google.maps.geometry.spherical.computeDistanceBetween(pt,gmarkers[i].getPosition()); 
     gmarkers[i].setMap(null); 
     closest.push(gmarkers[i]); 
     } 
     closest.sort(sortByDist); 
     return closest; 
    } 

    function sortByDist(a,b) { 
     return (a.distance- b.distance) 
    } 

    function calculateDistances(pt,closest,numberOfResults) { 
     var service = new google.maps.DistanceMatrixService(); 
     var request = { 
      origins: [pt], 
      destinations: [], 
      travelMode: google.maps.TravelMode.DRIVING, 
      unitSystem: google.maps.UnitSystem.IMPERIAL, 
      avoidHighways: false, 
      avoidTolls: false 
     }; 
     for (var i=0; i<closest.length; i++) request.destinations.push(closest[i].getPosition()); 
     service.getDistanceMatrix(request, function (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('search_results'); 
      outputDiv.innerHTML = ''; 

      var splitLoc = pt; 
      splitLoc.split(","); 
      alert(splitLoc[1]); 

      photo_lat = splitLoc[0]; // lat 
      photo_lng = splitLoc[1]; // lng 

      profile_photo = "https://maps.googleapis.com/maps/api/streetview?size=600x300&location=" + photo_lat + "," + photo_lng + "&heading=151.78&pitch=-0.76"; 

      var results = response.rows[0].elements; 
      for (var i = 0; i < numberOfResults; i++) { 
      closest[i].setMap(map); 
      outputDiv.innerHTML += "<div class='location_list' style='background:url(" + profile_photo + ");'>" + "<div class='inner'>" + "<a href='javascript:google.maps.event.trigger(closest["+i+"],\"click\");'>"+closest[i].title + '</a><br>' + closest[i].address+"<br>" 
       + results[i].distance.text + ' appoximately ' 
       + results[i].duration.text 
       + "</div></div>"; 
      } 
     } 
     }); 

} 

在過去的功能,calculateDistances,我想座標從 「PT」 變量分裂,然後將lat和lng傳遞到街景圖像api中以輸出每個位置的靜態圖像。

我得到的錯誤:

Uncaught TypeError: splitLoc.split is not a function 

試圖分裂PT時。我的猜測是,pt格式不對,但我無法弄清楚。當我單獨提醒pt時,它會將lat和lng一起顯示正確,但錯誤發生在split上。

如何將pt拆分成單獨的經緯度然後傳入?

+0

這錯誤意味着' pt'可能不是一個字符串(爲什麼你期望它是一個?在鏈接的例子中它是一個'google.maps.LatLng'對象)。請提供[最小,完整,已測試和可讀的示例](http://stackoverflow.com/help/mcve),其中包含此問題。 – geocodezip

+0

@geocodezip我意識到現在pt代表起始位置,但我實際上試圖獲得每個「最接近」標記的緯度/經度。我需要訪問哪個對象? – cpcdev

+0

這是另一個問題。 – geocodezip

回答

1

pt不是字符串,而是具有屬性lat和lng的對象。但是,如果您調用alert(pt),它會將該對象作爲字符串進行投射。

例如

pt.toString() 「(37.4418834,-122.14301949999998)」

要獲得緯度/經度只是使用pt.lat或pt.lng

+0

感謝您的信息!我試過pt.lat和pt.lng,但它們只是返回函數而不是值 – cpcdev

+0

好的,謝謝你必須使用pt.lat()和pt.lng() – cpcdev

相關問題