c++ - 允许图像角点坐标且适用于非网络语言的 map API

标签 c++ delphi google-maps mapping geospatial

有人要求我添加来自 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/

相关文章:

c++ - 使用 str += "A"或 str = str + "A"连接字符串之间的性能差异

windows - 使用delphi确定进程虚拟大小

delphi - 如何使用泛型方法和<T>数组的参数数组?

sql - 如何为 Interbase 更改现有数据库的字符集

vb.net - 将 Google map 添加到 VB 2010 应用程序

javascript - Google Maps API 仅显示一个信息窗口 - 循环问题

c++ - QtSql连接

c++ - C++中的字符数组

android - 不同设备的授权失败(Android Google Map API v2)

c++ - 从第一类型的第二个非类型参数推导第一类型