如果我在网页中显示一个指向地图的链接。
被称为,并且参数是:
如果委托方法返回
当我返回
并且最终对显示没有影响。你知道这是什么意思吗?
<a href="http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398">Location</a>
当在标准的iPhone Safari浏览器中点击时,它会打开本机iOS6 Apple Maps应用程序。当我在我的应用程序中使用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的苹果地图应用程序。我可以尝试使用CLGeocoder
从URL创建一个MKMapItem
,类似于如何在iOS 6中使用特定地址启动iOS地图应用程序?,但CLGeocoder
似乎只接受纯文本而不是带有所有常规注释的URL,这需要进行详细的解析。如果我与Mobile Safari处理URL的方式不同,那么我可能会看到不同的地图结果,具体取决于我是通过UIWebView还是Safari从相同的初始链接到达Maps应用程序。
有没有一种方法可以让UIWebView从链接中打开iOS6的苹果地图应用程序而无需解析和地理编码URL?
顺便说一下,在我的代理方法被调用以处理maps.google.com url之后,它会被调用两次,并带有以下参数:url=about:blank
navigationType=UIWebViewNavigationTypeOther
并且最终对显示没有影响。你知道这是什么意思吗?