2015-02-05 48 views
2

我知道半徑小於50米的getPanoramaByLocation會返回最近的街景全景圖。但是,對於一些地點,並不總是街景。那麼,我做的是這樣的:使用鐳半徑大於50米的getPanoramaByLocation獲取最近街景的最佳方式

function insider_function(locations) { 
    var place = new google.maps.LatLng(locations[local_idx].lat,locations[local_idx].lng); 
    sv.getPanoramaByLocation(place, 50, function(data, status) { 
    if (status == google.maps.StreetViewStatus.OK) { 
     insider_function_2(locations[local_idx], data); 
    } else { 
     sv.getPanoramaByLocation(place, 100, function(data, status) { 
     if (status == google.maps.StreetViewStatus.OK) { 
      insider_function_2(locations[local_idx], data); 
     } else { 
      alert('Internal error: ' + status + locations[local_idx]); 
     } 
    } 
} 

如果半徑50沒有返回任何結果,我調用半徑100但還是我越來越警惕ZERO_RESULT一些地址。如果我通過一個非常大的數字,比如說9999,我可能會看到街景非常遠的大多數其他位置,街道都是封閉的。

那麼,什麼是讓半徑超過50

更大最近街景服務全景圖我不知道谷歌地圖是如何做到這一點的最好辦法。
例如,如果我使用「2300 Geng Rd,Palo Alto,CA」,座標是37.4513333,-122.1214268。 getPanoramaByLocation半徑100將返回結果爲零,但有在街道視圖: https://www.google.com/maps/place/2300+Geng+Rd,+Palo+Alto,+CA+94303/@37.4513333,-122.1214268

回答

1

如果半徑200做到這一點,它會顯示一個街景,你可以看看這個jsfiddle linkhttp://jsfiddle.net/8ujnbh62/ 因爲沒有路燈以半徑50查看您的地址周圍的數據。但是,如果您提供更大的半徑,則會顯示街道視圖。

從您提供的Google地圖鏈接(https://www.google.com/maps/place/2300+Geng+Rd,+Palo+Alto,+CA+94303/@37.4513333,-122.1214268)中不能看到「2300 Geng Rd,Palo,Alto,CA」的街景,而是它提供了E Bayshore路的街景,距「2300耿路」半徑200左右。

在你的情況下,如果Google Map沒有返回任何街景數據,你可能只需製作另一個具有更大半徑的函數。

+0

因此,我必須多次調用sv.getPanoramaByLocation才能獲得封閉的街景視圖?這將推遲網站完成加載。 –

+0

或者您也可以使用更大的半徑。 – ztan

1

這位thread的Google工程師解釋了這個問題。這是從該線程獲得的兩個選項。

  1. 使用1000(1K)的半徑,它在獲得最接近的全息圖中「最」的作用。 (我發現這確實工作得很好。)

  2. 運行兩個或多個搜索。從大範圍開始搜索,然後按照自己的方式進行搜索,而不是從小開始搜索。當找到半徑較大的pano位置時,請使用搜索點與找到的pano之間的距離作爲下一次搜索的半徑值。根據工程師的評論,你將「可能」只需要運行兩個搜索請求。

相關問題