1

我想要一种基于表示所需矩形或区域的两个坐标来获取静态地图(图像文件)的方法。

建议?

4

4 回答 4

2

是的。谷歌有一个静态地图 API 可以做到这一点。它基本上只是一个将纬度、经度和缩放级别作为参数(以及许多其他变量)传递的 URL。您可以在Google Maps API 文档中了解它。

这是您可以执行的操作的示例:

从网址:

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。我创建了一个示例 400x400 图像。只需更改以下 URL 中的键即可获取静态地图图像:

http://maps.google.com/staticmap?center=35,65&zoom=6&size=400x400&key=<your key here>&format=jpg

感谢ChrisB指出跨度参数(我以前没见过)。我用 URL 的 span 版本更新了我的示例:

http://maps.google.com/staticmap?center=35,65&span=5,5&size=400x400&key=<your key here>&sensor=false

正如您从示例中看到的,这会生成与原始 URL 相同的缩放级别,但提供了一种更容易到达那里的方式(而不是手动调整缩放并检查边缘)。

正如克里斯指出的那样,缩放级别的粒度只能接近地图的边缘。如果您需要更接近的近似值,我只能建议调整静态图像地图的大小以尝试更接近您的边界纬度/经度。

于 2009-06-29T23:53:35.390 回答
2

如果您需要地图精确地适合特定区域,那么您不太可能能够做到,因为大多数地图 API 都有预先指定的缩放级别,并且可能不会有允许的缩放级别你完全适合你的区域。

但是,如果您只是需要靠近,Google Static Maps API 提供了一种指定视口的方法,无需自己设置缩放级别。您所需要的只是中心点和跨度。如果您想要从 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

请注意,根据请求的图像大小,您将获得不同的结果。

于 2009-06-30T15:30:01.963 回答
0

使用OGC WMS GetMap 请求获取图像

页面说明如何获取此图像。图片来自 DEMIS,但有成千上万的供应商提供 WMS 服务

在此处输入图像描述

我推荐DEMIS,但这里有一些免费 WMS 服务的列表。

于 2012-01-01T21:55:33.237 回答
0

http://wiki.openstreetmap.org/wiki/MapOf

然而,这是关于 OpenStreetMap

于 2009-07-21T15:23:15.227 回答