11

目標:我想要有一個自定義搜索(地理編碼)功能,並且能夠列出並單擊每個結果並在地圖上顯示它 。谷歌地圖API v3 - 地理編碼器結果問題的界限

想要:相應地調整地圖邊界/縮放級別,即搜索「MA,USA」應縮放地圖讓我看到整個馬薩諸塞州,同時搜索「Boston,MA,USA」應放大波士頓地區。當列出多個結果,同樣應該對一個結果,當點擊應用。

問題:我可以在fitBounds中使用geometry.bounds對象 - 但是 - 您使用geocoder獲得的某些結果不包含該geometry.bounds對象。

一個簡單的例子:搜索 「波士頓」 返回

波士頓,MA,USA
波士頓,IN,美國
波士頓,肯塔基州,美國
波士頓,GA 31626,USA
波士頓,塞勒姆,VA 22713,USA
波士頓,紐約州14025,美國

「波士頓,肯塔基州」和「波士頓紐約14025」都沒有界限。

問題:是否有可靠的方式在適當的縮放 級別上顯示地圖上的任何地理編碼結果?

現在我使用類似的東西,但我覺得這個醜陋的,它並沒有解決問題變焦

if (results[0].geometry.bounds) { 

    map.fitBounds(results[0].geometry.bounds); 

} else { 

    map.setCenter(results[0].geometry.location); 
    // eventually set zoom here to some middle-range value (ugly) 
} 
+0

您是否嘗試過使用'viewport'對象。 – andresf 2012-02-29 03:36:43

+1

我應該在視口對象中查找哪些值?它似乎沒有在那裏返回任何界限。謝謝。 – MrUpsidown 2012-02-29 10:36:47

回答

15

對。嘗試兩種方法和測試之後,它出來的是:

  1. geometry.bounds對象「optionnaly返回」作爲醫生說
  2. 我們並不確切地知道geometry.bounds對象基於
  3. geometry.bounds什麼「可能不匹配建議的檢視」,往往不
  4. geometry.bounds返回任何尺寸和形狀的正方形或矩形,而視口的功能總是以相同的縱橫比返回一個矩形(約1.43),無論地圖容器尺寸是,據我測試。

以下是文檔中提到的加利福尼亞州舊金山的示例。
在使用紅色和geometry.bounds藍色使用視功能。

San Francisco, CA

的解決方案是非常簡單和可靠。

var resultBounds = new google.maps.LatLngBounds(

    results[0].geometry.viewport.getSouthWest(), 
    results[0].geometry.viewport.getNorthEast() 
); 

map.fitBounds(resultBounds); 
+0

你知道這些屬性是否仍然成立嗎?即在視口上的縱橫比的縱橫比?信息的來源? – 2015-10-20 09:40:11

+0

你不能測試它嗎?我不認爲我有這樣的小提琴。 – MrUpsidown 2015-10-20 10:15:30

1

視口對象有你需要一個邊界對象的信息。像這樣:

var bounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(results[0].geometry.viewport.southwest.lat, results[0].geometry.viewport.southwest.lng), 
    new google.maps.LatLng(results[0].geometry.viewport.northeast.lat, results[0].geometry.viewport.northeast.lng) 
); 

然後,您可以在該新邊界對象上使用fitBounds,就像您在爲返回的邊界對象做的一樣。像這樣:

map.fitBounds(bounds); 
+0

我會在一分鐘內對此進行測試,但是,如果我理解的很好,所有結果都將具有這4個視口值。所以如果他們有,爲什麼會有一些結果與幾何。邊界對象和一些不?奇怪的是,我認爲... – MrUpsidown 2012-02-29 19:25:44

+0

我不完全確定,但這是Google從http://code.google.com/apis/maps/documentation/geocoding/#Results取得的解釋:「界限(可選地返回)存儲請注意,這些邊界可能與推薦的視口不匹配(例如,舊金山包含Farallon島,這些島在技術上屬於城市的一部分,但可能不應在視口中返回。 )「 – 2012-02-29 19:34:26

+0

Mmhh ...有趣!我將嘗試兩種方式,在我的地圖上繪製幾個矩形,檢查差異(如果有)並在此處報告。 – MrUpsidown 2012-02-29 19:40:52