如果我在一个网页开放iOS6的苹果地图应用在一个UIWebView
<a href="http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398">Location</a>
它在标准的iPhone Safari浏览器点击后打开本地iOS6的苹果地图应用
显示一个链接到地图。当我在我的应用程序里面一个UIWebView显示相同的网页,然后单击
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
被称为链接,我的委托方法和参数
url=http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398
navigationType=UIWebViewNavigationTypeLinkClicked
如果委托方法返回YES
指示UIWebView应该继续并打开链接,立即触发代表的新呼叫,此时参数为
url=http://maps.google.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398
navigationType=UIWebViewNavigationTypeLinkClicked
并返回YES
这个可预见的结果是在我的UIWebView中打开了maps.google.com网页。但我确实希望启动iOS6 Apple Maps应用程序。我可以尝试使用CLGeocoder
来创建一个MKMapItem
沿着How to launch iOS Maps App with specific address in iOS 6?的行,但CLGeocoder
似乎要纯文本,而不是一个URL与所有其传统的注释,相当详细的解析工作。如果我以与移动Safari浏览器不同的方式解析网址,则可能会看到不同的地图结果,具体取决于我是否通过我的UIWebView或Safari从相同的初始链接到达地图应用程序。
是否有某种方法可以让UIWebView从链接中打开iOS6 Apple Maps应用程序,而无需解析然后对URL进行地址解析?
顺便说一句,我的委托方法被调用与maps.google.com网址后,它与这些参数叫了两声:
url=about:blank
navigationType=UIWebViewNavigationTypeOther
,并最终具有显示没有影响。任何想法是什么?