有人要求我添加来自 any number of map APIs 之一的 map 支持到我们软件中的地理显示。显示器当前显示地理坐标,例如一系列 GPS 定位;我们想在他们身后展示一张 map 。我们使用 C++ Builder 2010(偶尔 Delphi)所以这是 native 编译的软件,而不是网络应用程序。
问题是许多 map API 似乎通过指定一个点来工作,并且 API 返回以该点为中心的某个大小的 map 。谷歌是最好的例子:specify a centre and a size and scale (in pixels) .这意味着对于您返回的图像,您不知道图像角点的地理位置(除非我遗漏了什么 - 这将是一个很好的答案!)这意味着您无法绘制图像作为地理图的背景。
换一种方式解释:窗口的左右边界分别为(比方说)东经 147 度和 147.2 度; (比如)南纬 42.5 度和 42.6 度的顶部和底部边界。为了用 map 填充该窗口,您需要能够请求包含窗口角点的 map ,并知道返回图像的坐标,以便正确呈现图像。
因此,我正在寻求 SO 关于满足以下要求的良好 map API 的建议:
- 允许包含四个角点的请求;返回结果具有图像角的已知坐标
- 易于从网络浏览器外部以 native 代码使用。给你一个想法,一个像Google's static image API这样的API是一个很好的答案,它易于使用且易于处理输出;他们的 Javascript API将是一个糟糕的答案;他们的 web services API可以接受,但需要处理 JSON 或 XML,因此比需要的更难。
最佳答案
OpenStreetMap 允许获取由边界框指定的图像,如下所示:
http://tile.openstreetmap.org/cgi-bin/export?bbox=min_lon,min_lat,max_lon,max_lat&scale=3500&format=png
缺点是 url 经常导致错误,要么是因为您请求的图像太大,要么是因为他们的服务器太忙。您可能需要考虑使用 OSM 数据运行您自己的服务器。运行您自己的服务器的另一个优势是您可以调整渲染器。
关于c++ - 允许图像角点坐标且适用于非网络语言的 map API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7675075/