2013-01-25 17 views
5

Ben bir web sayfası standart iPhone Safari tarayıcıda tıklandığında o yerli iOS6 Apple Maps uygulamasını açarAçık iOS6 Apple Maps uygulaması bir UIWebView

<a href="http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398">Location</a> 

bir haritanın bağlantısını göstermek durumunda. Benim app içinde bir UIWebView aynı web sayfasını görüntülemek ve daha sonra

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

denir linki benim temsilci yöntemi tıklatın ve temsilci yöntemi belirtmek için YES dönerse parametreler

url=http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398 
navigationType=UIWebViewNavigationTypeLinkClicked 

olduğunda UIWebView devam edin ve bağlantıyı açmak gerektiğini, temsilci için yeni bir çağrı hemen tetiklenir ve bu kez parametreleri

url=http://maps.google.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398 
navigationType=UIWebViewNavigationTypeLinkClicked 

ve geri dönen vardır Bunun için, YES, tahminen, UIWebView'ımda maps.google.com web sayfasının açılmasıyla sonuçlanır. Ama aslında iOS6 Apple Maps uygulamasının başlatılmasını istedim. URL'den MKMapItem oluşturmak için CLGeocoder'u deneyebilirim, How to launch iOS Maps App with specific address in iOS 6? satırları boyunca, ancak CLGeocoder düz metin ve tüm geleneksel açıklama ile bir URL, oldukça ayrıntılı bir ayrıştırma işi gibi görünüyor. URL’yi Mobil Safari’nin yapma şeklinden farklı bir şekilde ayrıştırırsam, Haritalar uygulamasına UIWebView veya Safari’mden aynı ilk bağlantıdan ulaşıp ulaşmadığına bağlı olarak farklı harita sonuçları görebilirim.

URL6'yı ayrıştırmak ve sonra kodlamak zorunda kalmadan bir bağlantıdan iOS6 Apple Maps uygulamasını açmak için bir UIWebView almanın bir yolu var mı? Benim temsilci yöntemi maps.google.com url ile çağrıldıktan sonra bir kenara

, bu parametrelerle iki defa deniyor:

url=about:blank 
navigationType=UIWebViewNavigationTypeOther 

ve sonunda ekranda hiçbir etkisi yoktur. Ne hakkında olduğu hakkında bir fikrin var mı?

cevap

4

Evet, bir UIWebview uygulamasından Maps uygulamasına maps.apple.com bağlantısı açmanın bir yolu var. UIWebview'in bağlantıyı doğrudan açmasına izin vermeyin, ancak dağıtmak için işletim sistemine aktarın. webView: shouldStartLoadWithRequest: navigationType:, ben harita bağlantısı aramak ve özel olarak tedavi:

if (([url.scheme isEqualToString:@"http"] || [url.scheme isEqualToString:@"https"]) && [url.host isEqualToString:@"maps.apple.com"]) { //it's an apple maps app request 
    NSLog(@"Attempting Apple Maps app open"); 
    [[UIApplication sharedApplication]openURL:url]; 
    return NO; 
} 

Ve bu iOS6 Apple Maps uygulamasını açar. IOS5'te, Google Haritalar web sayfasını Safari'de açacaktır. IOS5 sistemlerini arayacağım ve URL'yi de orada farklı şekilde ele alacağım.