您好,提前谢谢您,
我想问是否有一种方法可以编译已知的谷歌地图图块并将其加载到 Phonegap 应用程序中。
更具体地说,我正在开发一个应用程序,涉及特定区域内的地理位置、路径导航等。由于应用程序的使用性质(例如,它可能用于野生动物),用户的手机可能无法获得信号来连接互联网,因此我希望即使在手机离线。
我还考虑如果提前检索谷歌地图,是否可以获得缓存的图块。 Phonegap 可以做到这一点吗?
我也愿意接受有关其他地图服务的任何建议,而不仅仅是谷歌地图。
我一直致力于使用 OpenLayers 缓存具有phonegap 的开放街道地图图块。我使用 PhoneGap-Downloader (https://github.com/phonegap/phonegap-plugins/tree/master/Android/Downloader) 将图块存储在文件系统上,并使用 localstorage 将图块的 url 映射到文件系统上的位置。在 openlayers 中,我子类化 OpenLayers.Layer.OSM 以重载 getURLasync 并拦截图块 URL 的设置:
EDIT:在最新版本的phonegap中,不需要PhoneGap-Downloader插件,只需使用本机文件传输:http://docs.phonegap.com/en/2.3.0/cordova_file_file.md.html#FileTransfer_download http://docs.phonegap.com/en/2.3.0/cordova_file_file.md.html#FileTransfer_download
OSMWithLocalStorage = OpenLayers.Class(OpenLayers.Layer.OSM, {
initialize: function(options) {
OpenLayers.Layer.OSM.prototype.initialize.apply(this, ["CachedMap"]);
this.async = true;
this.isBaseLayer = true;
this.url = 'http://tile.openstreetmap.org/${z}/${x}/${y}.png';
},
getURLasync: function(bounds, scope, prop, callback) {
var url = OpenLayers.Layer.OSM.prototype.getURL.apply(this, [bounds]);
var cached = window.localStorage.get(url);
if(cached){
scope[prop] = cached;
}
else{
scope[prop] = url;
}
callback.apply(scope);
},
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)