我在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 V3:根据地图缩放级别缩放折线?
- 4. Google Maps API v3在特定缩放级别下方打开标记
- 5. Google Maps API v3设置缩放级别以显示给定半径?
- 6. 如何获取缩放级别以解码Google Maps Directions API中的折线?
- 7. Android - 在Google Maps API中禁用缩放缩放控件
- 8. 如何使用Google Maps API V3“放大”一个级别?
- 9. 如何确定静态Google地图缩放级别
- 10. 使用Google Maps API获取当前缩放级别的最大观看距离
- 11. Google Maps V2 - Android - 获取当前缩放级别
- 12. Android通过缩放级别(Google Maps V2)增加折线宽度
- 13. Google Maps Javascript API附加缩放比例
- 14. Google Maps API缩放无拼贴
- 15. Google静态地图API如何指定最大缩放级别
- 16. Google地球从边界框确定缩放级别
- 17. MkMapView缩放级别
- 18. 使用googlemaps api缩放超过21个缩放级别Android
- 19. MapActivity中的Google Maps高级功能(Google Maps API)
- 20. 运行Google Maps Android API的最小Android API级别
- 21. Google Maps API:计算折线的中心/缩放
- 22. 确定MapKitView中的放大/缩小级别
- 23. openlayers标记moveTo只在特定的缩放级别准确
- 24. Google Maps API - 放置新针
- 25. Google Maps API v3:如何设置缩放级别并将中心映射到用户提交的位置?
- 26. 在Android上获得地图缩放级别,比如在JS Google Maps API上:map.getBoundsZoomLevel(bounds)
- 27. UIWebView缩放级别
- 28. Google-Maps v3:如何根据缩放级别更改地图样式?
- 29. API级别8的Google Maps API V2 android应用程序最多17个
- 30. Google MarkerClusterer:低于某个缩放级别的decluster标记?