将Open Streetmap地图渲染为已知比例的位图

时间:2016-07-21 18:37:44

标签: android openstreetmap

我如何在Android上使用OpenStreetMap生成地图作为位图,其中心点对应于特定位置(如(25.60156,-80.41306)),其中每个像素代表一个大约100米的区域从北到南,从东到西约70-100米?

出于本示例的目的,假设我希望地图包含高级细节,例如国家/州的轮廓,县轮廓和主要道路。我不想在地图上撒上城市名称,小路,公交线路,水体等等。

我已经看过数百个示例,展示如何将OSM地图嵌入Android应用程序作为地图应用程序,但似乎很少有关于使用OSM作为库来生成地图作为位图以供使用的信息通过ELSE(如8192 x 4096位图适合用作OpenGL ES 2.0纹理)。

我当然愿意使用谷歌地图......但据我所知,谷歌地图并不缺乏这样做的API,它被明确禁止它的TOS除了将其作为Google MapView逐字嵌入之外,还可以对其地图数据进行任何操作。

我也对其他想法持开放态度,比如使用免费的公共GIS数据......但我得到的印象是,即使是大多数"免费"地理信息系统数据以某种方式受到ESRI的限制,并被限制用于商业用途(可能通过专利,或者可能通过声称其软件生成的数据文件的所有权)。

注意:我更喜欢从某个公共服务器获取地图数据,并在Android下本地执行所有地图生成,但如果这是一个完全没有希望的任务,另一种方法可能是生成地图位图在我的网络服务器上,根据需要为我的应用用户提供服务。

1 个答案:

答案 0 :(得分:1)

您正在寻找的内容大致是“静态地图”的概念 - 一种为特定地理区域创建位图并将其作为图像返回的Web服务。许多公司将此作为服务提供,并且倾向于使用允许您将这些图像用作HTML中的图像或移动设备上的纹理的术语。

这是Google Maps Static implementationMapbox Static Maps API。两者都支持自定义样式,可以删除不必要的视觉功能;它是Mapbox作为Mapbox Studio一部分的重点,但也是Google Maps supports styled maps

完全披露:我为Mapbox工作

就以米为单位的特定尺度请求图像而言,table of resolution and scale可以让您前进。