首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PhoneGap2.3开放地图和URLS不再适用于iPhone

PhoneGap2.3开放地图和URLS不再适用于iPhone
EN

Stack Overflow用户
提问于 2013-01-11 13:41:06
回答 1查看 811关注 0票数 1

刚刚安装了phonegap 2.3,并尝试打开我创建的地图链接。在更新之前,它一直运行得很好。

我已经调整了URL方案以适应here中的方案,我还尝试为它提供一个普通的url,无论我做什么,我似乎都无法让它加载应用程序之外的链接,无论是浏览器窗口还是本地地图应用程序。

代码:

代码语言:javascript
运行
复制
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检测正常,而且很难看..但它是有效的:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-14 07:47:44

好吧,经过多次搜索和错误的线索,我发现URL在这个版本的Cordova/Phonegap中的处理方式是不同的。

所以我找到了委托:-编辑这个委托方法是在CDVViewController.m中作为Cordova项目的一部分

代码语言:javascript
运行
复制
 - (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request
 navigationType:(UIWebViewNavigationType)navigationType

并添加了一个if-case。检查结果基本上是“是网址(https或http)和(maps.google.com/maps或maps.apple.com -分别适用于iOS5和6)的网址”

代码语言:javascript
运行
复制
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的应用程序引用无法解决。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14272373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档