我在Google Maps API中遇到了一些問題;我想確定某個地方的LatLong(例如,從一個城市的名稱),然後將我的地圖集中在它上面。 LatLong部分正在工作,所以在該點上集中地圖。但是,我無法弄清楚如何確定一個好的縮放級別,當我只有這個單一點的時候。例如,當用戶輸入「俄羅斯」而不是「阿姆斯特丹」時會發生什麼情況,因此我不能只使用一些標準的縮放級別,而這些縮放級別在大多數情況下可能看起來不錯。一些幫助,將不勝感激:)在Google Maps API中確定單個LatLong的縮放級別
回答
我有同樣的問題,Nick Retallack的回答是對我有用的。爲了提供更多詳細信息,未記錄的屬性的名稱是「ExtendedData」,並且其中包含「LatLonBox」,其中包含適當縮放級別的北,南,東和西邊界。
舉例來說,如果你是做了 「90210」 搜索,這裏的輸出(我已經格式化的可讀性):
{
"id":"p1",
"address":"Beverly Hills, CA 90210, USA",
"AddressDetails":{
"Accuracy":5,
"Country":{
"AdministrativeArea":{
"AdministrativeAreaName":"CA",
"SubAdministrativeArea":{
"Locality":{
"LocalityName":"Beverly Hills",
"PostalCode":{"PostalCodeNumber":"90210"}
},
"SubAdministrativeAreaName":"Los Angeles"
}
},
"CountryName":"USA",
"CountryNameCode":"US"
}
},
// This is what you're looking for "ExtendedData":{ "LatLonBox":{ "north":34.13919, "south":34.067018, "east":-118.38971, "west":-118.442796 } },
"Point":{
"coordinates":[-118.4104684,34.1030032,0]
}
}
這雖然沒有記錄,所以我不確定它是否能夠在API變更後繼續存在。最好不要認爲它會一直存在,並定義一些合理的默認縮放值。
您的問題缺少一個輸入參數。你說LatLon點,但實際上你需要LatLonBounds來做可用的地圖窗口大小的聚焦。我假設你想模仿谷歌地圖的官方行爲。除了地理編碼之外,他們還依賴於Gmap API無法訪問的其他數據。所以你必須提供你自己的。
下面的調用將會給你的縮放級別,如果你可以用適當的矩形邊界對象提供的:
GMap2.getBoundsZoomLevel(bounds)
但如何計算的界限?
您可以使用地圖確定的「通過眼睛」的矩形手動註釋每個源記錄,並讓某人輸入值。
理想情況下,您需要數據,幸運的是在DBPedia上有大量的數據流失。
我的幾何和代數有點生疏,但有一點點,我相信你可以計算一個矩形給定你想查看的位置的區域。 (也許開始與平方根如果假設一個正方形的城市,或重新排列πR如果假設的圓形的一個)
Try out此查詢,以提取區域的面積。
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpedia2: <http://dbpedia.org/property/>
SELECT ?url, ?label, ?lat, ?long, ?area WHERE {
?url geo:lat ?lat .
?url geo:lat ?long .
?url rdfs:label ?label . FILTER (lang(?label) = 'en') .
?url dbpedia2:area ?area . FILTER (datatype(?area) = xsd:double)
} LIMIT 10
你需要緩存的結果或加載它們放入一個更快更多的本地數據源作爲DBpedia中被搜索非結構化數據(以及RDF數據)的三元組的數以百萬計。您可以從DBPedia購買download the Titles, Infobox and coordinates data sets並將它們加載到耶拿。請記住在加載期間關閉所有驗證選項:-)
您也可以使用RESTful API訪問此數據,該數據具有相當可用的Web表單,並且可以使用「複製下載鏈接按鈕」 Firefox下載窗口,或將輸出格式設置爲HTML。它也生成XML和JSON。
不要忘記添加餘量不穩定型城市......
我剛纔問在谷歌IO這個問題。此功能存在,但沒有記錄,並且尚無訪問權限。你想要做的是得到Structured Address。檢查你找回的json結構並查找這些新參數。當我有機會嘗試這些時,我會發布更多信息。
您是否從地理編碼器獲取您的位置點?如果你是,你可以抓住點的準確性和變焦的基礎(更高的精度=更高的變焦)。
我在Objective-C中實現了Nick Retallack解決方案的一個版本。
Equivalent Objective-C code for Google Maps GMap2.getBoundsZoomLevel(bounds)?
我有同樣的問題here,但有一個新的API版本。新的解決方案是map.fitBounds(autocomplete.getPlace().geometry.viewport);
。
- 1. Google Maps JavaScript API - 自動縮放級別?
- 2. Google Maps默認縮放級別
- 3. 如何讓Google Maps API爲一個國家設置正確的縮放級別?
- 4. 根據Google Maps API的縮放級別更新邊界 - 修訂
- 5. Google Maps API V3縮放級別匹配視口大小?
- 6. Google Maps V3:根據地圖縮放級別縮放折線?
- 7. Google Maps API v3在特定縮放級別下方打開標記
- 8. Android Google Maps v2以英里爲單位設置縮放級別
- 9. 在Google Maps API v3中使用MarkerClusterer限制縮放級別時出錯
- 10. Google Maps API v3設置縮放級別以顯示給定半徑?
- 11. 如何獲取縮放級別以解碼Google Maps Directions API中的折線?
- 12. Android - 在Google Maps API中禁用縮放縮放控件
- 13. 如何使用Google Maps API V3「放大」一個級別?
- 14. 如何確定靜態Google地圖縮放級別
- 15. 在Leaflet Maps中添加一個額外的縮放級別
- 16. 設置Google Maps for iOS SDK的最大縮放級別kGMSMaxZoomLevel
- 17. Google Maps API v3 - 不同縮放級別上的不同標記/標籤
- 18. 使用Google Maps API獲取當前縮放級別的最大觀看距離
- 19. Google Maps Api v3,使用場所時的動態縮放級別庫
- 20. Google Maps V2 - Android - 獲取當前縮放級別
- 21. Android Google Maps v2 - 爲myLocation設置縮放級別
- 22. Android通過縮放級別(Google Maps V2)增加折線寬度
- 23. Google Maps API標記和縮放
- 24. Google Maps Javascript API附加縮放比例
- 25. Google Maps API縮放無拼貼
- 26. 根據屏幕/設備寬度設置Google Maps API V3縮放級別
- 27. Google靜態地圖API如何指定最大縮放級別
- 28. 根據Google Maps API v3中的地理位置準確性設置縮放級別
- 29. Google地球從邊界框確定縮放級別
- 30. 根據縮放級別縮放自定義標記Google地圖