是否有任何地图 api 允许您检索确切的区域?
Posted
技术标签:
【中文标题】是否有任何地图 api 允许您检索确切的区域?【英文标题】:Does any map api allow you to retrieve an exact area? 【发布时间】:2009-06-29 23:23:15 【问题描述】:我想要一种基于表示所需矩形或区域的两个坐标获取静态地图(图像文件)的方法。
建议?
【问题讨论】:
【参考方案1】:如果您需要地图精确地适合特定区域,那么您不太可能做到,因为大多数地图 API 都有预先指定的缩放级别,并且可能不会有缩放级别这将使您完全适合您的区域。
但是,如果您只是需要靠近,Google 静态地图 API 提供了一种指定 viewport 的方法,无需自己设置缩放级别。您所需要的只是中心点和跨度。如果您想要从 SW(30,70) 到 NE(40,60) 的区域,则中心为 (35,65),跨度为 (5,5)。
http://maps.google.com/staticmap?center=35,65&span=5,5&size=400x400&key=MAPS_API_KEY&sensor=false
请注意,根据请求的图像大小,您会得到不同的结果。
【讨论】:
【参考方案2】:是的。谷歌有一个静态地图 API 可以做到这一点。它基本上只是一个将纬度、经度和缩放级别作为参数(以及许多其他变量)传递的 URL。你可以在Google Maps API documentation阅读它。
以下是您可以执行的操作的示例:
来自网址:
http://maps.google.com/staticmap?center=40,26&zoom=1&size=150x112&maptype=satellite&key=ABQIAAAAgb5KEVTm54vkPcAkU9xOvBR30EG5jFWfUzfYJTWEkWk2p04CHxTGDNV791-cU95kOnweeZ0SsURYSA&format=jpg
编辑:根据您的评论。我能得到的最接近正方形 30,40 lat 60,70 lng 的是中心 35,65 缩放级别 6。我有 created an example 400x400 image。只需更改以下 URL 中的键即可获取您的静态地图图像:
http://maps.google.com/staticmap?center=35,65&zoom=6&size=400x400&key=<your key here>&format=jpg
感谢ChrisB 指出跨度参数(我以前没见过)。我用 URL 的 span 版本更新了我的 example:
http://maps.google.com/staticmap?center=35,65&span=5,5&size=400x400&key=<your key here>&sensor=false
从示例中可以看出,这会生成与原始 URL 相同的缩放级别,但提供了一种更容易到达那里的方式(而不是手动调整缩放并检查边缘)。
正如 Chris 指出的那样,缩放级别的粒度只能接近地图的边缘。如果您需要更接近的近似值,我只能建议调整静态图像地图的 size 以尝试更接近您的边界纬度/经度。
【讨论】:
那么我如何确保我只获得 lng 70 lat 40、lng 60 lat 30 之间的区域? 您需要调整缩放级别。将中心点设置为 lng 75,lat 35,然后调整缩放,直到您对返回的图像感到满意。 您将需要一个 Google Maps API 密钥来执行此操作(它是 URL 的一部分)...我将尝试缩放,看看能否为您提供所需的 URL。 【参考方案3】:http://wiki.openstreetmap.org/wiki/MapOf
不过这是关于 OpenStreetMap
【讨论】:
【参考方案4】:使用OGC WMS GetMap request 获取图像
page 解释了如何获取此图像。图片来自 DEMIS,但有成千上万的供应商提供 WMS 服务
我确实推荐DEMIS,但这里有一些免费 WMS 服务的列表。
GeoServer list gis.stackexchange.com 列表列表【讨论】:
以上是关于是否有任何地图 api 允许您检索确切的区域?的主要内容,如果未能解决你的问题,请参考以下文章
区域形状的检索 - Here Maps API with V7
如何在 Graphics32 中检索 RenderText 的确切文本宽度
是否可以通过 twitter API 检索已删除的推文或已删除的帐户?