刚刚安装了phonegap 2.3并尝试打开我创建的地图链接。在更新之前,这一点非常好。
我已经调整了URL方案以适应here中的那些,并且我也尝试将其提供给普通网址,无论我做什么,我似乎都无法在应用程序外部加载链接,无论是浏览器窗口还是原生地图应用程序..
代码:
openDeviceMapsApplication: function(address, lat, lon) {
var query = '?';
address = address + ", Australia";
address = encodeURI(address);
if (address[0] !== '.') {
query += 'q=' + address + '&';
} else {
query += 'q=' + lat + ',' + lon + '&';
}
query += 'z=15';
var url = 'http://maps.google.com/maps';
var osVersion = "not detected";
console.log("detect");
if(/OS [2-4](_\d)(_\d)? like Mac OS X/i.test(navigator.userAgent)) { //is it ios 2-4?
url = 'http://maps.google.com/maps'; osVersion = "ios 2-4";
console.log("ios2-4");
} else if(/CPU like Mac OS X/i.test(navigator.userAgent)) { // ios 1?!?!
url = 'http://maps.google.com/maps'; osVersion = "ios 1";
console.log("ios4");
} else if(/OS [5](_\d)(_\d)? like Mac OS X/i.test(navigator.userAgent)) { //ios 5?
url = 'http://maps.google.com/maps'; osVersion = "ios 5";
console.log("ios5");
} else{//ios 6 or greater
url = 'http://maps.apple.com/'; osVersion = "ios 6 or greater";
console.log("ios6");
}
url += query;
console.log(url);
window.location.href = url;
return;
},
有没有人有解决方法?
PS,os检测工作并且很难看......但是它有效:)
答案 0 :(得分:2)
好的,经过多次搜索和错误的线索后,我发现在这个版本的Cordova / Phonegap中,URL的处理方式不同。
所以我找到了代表: ---编辑此委托方法在CDVViewController.m中作为Cordova项目的一部分
- (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request
navigationType:(UIWebViewNavigationType)navigationType
并添加了一个if-case。该检查基本上表示“是网址(https或http),并且是(maps.google.com/maps或maps.apple.com - 分别用于ios 5和6)的网址
if (([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"] || [[url scheme] isEqualToString:@"itms-apps"]) &&
(([url.path rangeOfString:@"maps.google.com/maps"].location == NSNotFound) || ([url.path rangeOfString:@"maps.apple.com"].location == NSNotFound))) {
[[UIApplication sharedApplication] openURL:url];
return NO;
}
这解决了地图的问题,可能还有一些其他基于URL的应用程序引用无法解决。