2013-01-11 62 views
1

剛剛安裝phonegap 2.3並試圖打開我創建的地圖鏈接。這個工作完全正常,直到更新。phonegap 2.3開放地圖和URL不再適用於iPhone

我調整了URL方案以適應here中的方案,我也試着給它提供一個普通的url,不管我做什麼,我似乎無法得到它加載應用程序外部的鏈接,無論是一個瀏覽器窗口或原生地圖應用..

代碼:

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,操作系統探測工程,是醜陋的..但它的工作原理:)

回答

2

好了,經過多次搜索和假線索我已經發現的URL在此版本科爾多瓦/ PhoneGap的的處理方式不同。

所以我找到了委託: ---編輯此委託方法是CDVViewController.m作爲科爾多瓦項目

- (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request 
navigationType:(UIWebViewNavigationType)navigationType 

的一部分,並增加了,如果情況。支票基本上說「是URL(HTTPS或http),並且對於URL(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的應用程序引用,這並不能解決。

相關問題