我有这样一个场景,需要在地理编码后(获取经纬度时)突出边框并着色某个州或城市。
我该如何做到这一点?我是否需要完整的城市信息来绘制多边形轮廓?还是有地图API可以帮我完成这个任务。
我有这样一个场景,需要在地理编码后(获取经纬度时)突出边框并着色某个州或城市。
我该如何做到这一点?我是否需要完整的城市信息来绘制多边形轮廓?还是有地图API可以帮我完成这个任务。
正确。谷歌不提供此功能。因此,我们可以获得州边界的纬度/经度,并自己绘制多边形。
我使用了这个JS对象,并将其更改为Google地图对象(google.maps.LatLng
)。
例如:
var statesobj = {"AK": [new google.maps.LatLng(70.0187, -141.0205),
new google.maps.LatLng(70.1292, -141.7291),
new google.maps.LatLng(70.4515, -144.8163)]}
现在很简单了。在这些纬度/经度上进行循环。然后,您可以在美国每个州上绘制多边形。
这是我想出来的解决方案。如果您有更好的想法,请分享。
谷歌地图API不允许您检索城市边界。但是,还有其他几个地方可以获取坐标:
Flickr API
有一个基于人们标记的照片的Flickr API,但它只有人们标记照片的准确性,因此它足够好用来启动,但可能不适用于生产:http://karya-blog.blogspot.com/2012/12/fetching-city-polygons-with-flickr-api.html
Natural Earth Data
一个精确的替代方法是www.naturalearthdata.com。要从那里获取数据,您只需要进行两个请求:一个带有城市名,另一个带有它们的ID以获取参数:
unlock.edina.ac.uk/ws/search?name=berlin&gazetteer=naturalearth&format=json
然后
unlock.edina.ac.uk/ws/footprintLookup?format=json&identifier=14126951
就完成了 :)
Mapzen
如果您可以预先获取数据,请使用Mapzen,他们拥有完整且相当准确的数据库:https://mapzen.com/data/borders/
很抱歉,谷歌地图API没有提供任何访问区域(国家、州、城市等)形状的方法。
如果您想要突出显示某些区域,您需要基于从其他地方获取的数据创建自定义覆盖层。
它包括数据驱动的着色区域(在这种情况下,表示邮政编码),叠加在华盛顿特区的地图上。Logi Info可以使用GIS边界数据为州、县、城市、学区和其他区域生成区域叠加图层。与地图标记一样,可以单击区域以显示弹出信息窗口,并显示详细数据。