如何在自定义地图上进行离线地理定位,phonegap+kml

Posted

技术标签:

【中文标题】如何在自定义地图上进行离线地理定位,phonegap+kml【英文标题】:How to geolocate offline on a custom map, phonegap+kml 【发布时间】:2014-04-03 14:07:55 【问题描述】:

我需要在自定义地图上编写一个带有离线地理位置的山地旅游应用程序。但我还没有找到一个好的解决方案。 该应用程序需要适用于 iosandroid,我正在使用 Phonegap 进行开发。 有没有一种方法可以加载本地 KML 地图(或类似文件)并在该本地地图上使用 gps 对手机进行地理定位?全部没有 wifi 或互联网连接。 KML 文件将在应用程序内并随其下载。 Google api、earth、leaflet、bing、openlayer、mapbox 和 gmapify 似乎在没有互联网连接的情况下无法工作... 如果应用程序可以在经纬度变化时重新加载指针的位置,那将是非常棒的!

对不起,我的英语不好,感谢您的帮助

编辑: 我正在使用带有 Eclipse 4.2.1 的 phonegap 3.3、Xcode 5.0.2、android 开发人员工具 v 22.3.0。在装有 OS 10.8.5 的 Mac Book pro 上工作。在应用程序中还安装了带有 wikiitude phonegap 插件的增强现实

【问题讨论】:

【参考方案1】:

我已经为 Android 和 iOS 创建了基于 Phonegap 的应用程序,这些应用程序的要求与您的非常相似;使用自定义地图进行离线地理定位。

您可能会发现这个question and answer 对自定义地图很有用;我最终的解决方案是创建地图的 PNG-8 切片以减小文件大小,并且我使用 html5 画布编写了一个自定义切片实现,但您可能会发现像传单这样的现成的东西可以做到这一点。

我的应用程序用于自助步行,因此我使用 GPX 路线文件来定义步行路线,然后使用 javascript 数据结构(从 XML 发布)来定义特定位置,例如方向点和兴趣点,但 KML 可能很好为您服务。

为了让我的应用在后台继续进行位置跟踪,我在 Android 上使用了部分唤醒锁。在 iOS 上它更简单:我只需要在项目设置中设置背景位置模式属性。同样,您可能会发现我的 answer to this question 很有用。

在 Android 和 iOS 上,我仍在使用 Phonegap 2.9.0 来处理我的应用程序,它们是 on the iTunes Store 和 on Google Play。

希望对你有所帮助!

【讨论】:

嗨,Dpa99c!首先,您的回答非常有用,谢谢。我正在考虑构建类似问题中描述的东西,但我有点迷失方向。能否请您告诉我您是如何构建平铺地图的!?谢谢【参考方案2】:

是的,这是可能的,它可以通过多种方式完成。这是一篇关于使用 ArcGIS 实现这一目标的文章https://developers.arcgis.com/ios/guide/create-an-offline-map.htm

【讨论】:

还有其他方法吗?问题是我正在使用Phonegap,因为我对像obj-c这样的本机代码没有足够的了解。此外,在同一个应用程序中,在 android 和 ios 中,我安装了用于增强现实的 wikitude phonegap 插件。我害怕兼容性问题...是否可以仅使用 javascript 和 kml 而无需在 obj-c 中进行硬编码来获得目标?【参考方案3】:

这个插件怎么样? https://github.com/wf9a5m75/phonegap-googlemaps-plugin

此插件支持加载 kml(仅折线、多边形和标记)。 对于离线地图,TileOverlay 将为您提供帮助。

KmlOverlay https://github.com/wf9a5m75/phonegap-googlemaps-plugin/wiki/KmlOverlay

【讨论】:

以上是关于如何在自定义地图上进行离线地理定位,phonegap+kml的主要内容,如果未能解决你的问题,请参考以下文章

如何从数据库中读出经纬度,然后在地图上进行标注

百度地图怎样用手机定位

离线后也能使用百度地图吗

使用 OpenGL ES 1.0 在 Android 上进行离屏渲染的选项?

如何在人行横道科尔多瓦上进行地理定位

Cordova 地理定位插件有时不工作