2013-01-25 11 views
5

Jeśli wyświetli link do mapy na stronie internetowejOtwartych iOS6 Jabłko Maps aplikacja z łącza w UIWebView

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

otwiera natywną aplikację Mapy iOS6 Jabłko po kliknięciu w standardowej przeglądarce iPhone Safari. Kiedy wyświetli tę samą stronę w UIWebView wewnątrz mojej aplikacji, a następnie kliknij link, moja metoda delegat

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

nazywa, a parametry są

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

Jeśli metoda delegat zwraca YES wskazać że UIWebView powinien iść do przodu i otworzyć link, nowe wezwanie do delegata jest natychmiast wyzwalany, a tym razem parametry są

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

i powrocie YES do tego, zgodnie z przewidywaniami, powoduje otwarcie strony maps.google.com w moim interfejsie UIWebView. Ale faktycznie chciałem uruchomić aplikację Mapy Apple iOS6. Mogę wypróbować CLGeocoder, aby utworzyć adres URL z MKMapItem, zgodnie z How to launch iOS Maps App with specific address in iOS 6?, ale wydaje się, że wymaga zwykłego tekstu, a nie adresu URL z całą jego konwencjonalną adnotacją, dość szczegółowym zadaniem analizy składniowej. Jeśli przeanalizuję URL w inny sposób niż w Safari mobilnym, mogę zobaczyć różne wyniki map w zależności od tego, czy do mojego aplikacji UIWebView, czy Safari korzystałem z tego samego początkowego linku.

Czy jest jakiś sposób, aby uzyskać interfejs UIWebView do otwierania aplikacji Mapy Apple na iOS6 z łącza bez konieczności analizowania, a następnie geokodowania adresu URL?

Tak na marginesie, po moja metoda nazywa delegat z url maps.google.com, nazywa się dwukrotnie z tych parametrów:

url=about:blank 
navigationType=UIWebViewNavigationTypeOther 

i że ostatecznie nie ma wpływu na wyświetlaczu. Masz pojęcie, o co w tym wszystkim chodzi?

Odpowiedz

4

Tak, istnieje sposób na otwarcie linku maps.apple.com do aplikacji Mapy z widoku interfejsu użytkownika. Nie otwieraj linku bezpośrednio w UIWebview, ale przekaż je do systemu operacyjnego, aby je uporządkować. W webView: shouldStartLoadWithRequest: navigationType:, patrzę na odnośnik mapy i traktować go specjalnie:

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; 
} 

A to otwiera aplikację firmy Apple Maps w iOS6. W iOS5 otworzy stronę internetową Google Maps w Safari. Poszukam systemów iOS5 i potraktuję URL inaczej w tym miejscu.