emr*_*s57 5 url maps uiwebview ios ios6
如果我在网页中显示指向地图的链接
<a href="http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398">Location</a>
Run Code Online (Sandbox Code Playgroud)
它在标准iPhone Safari浏览器中单击时打开原生iOS6 Apple Maps应用程序.当我在我的应用程序内的UIWebView中显示相同的网页,然后单击链接,我的委托方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
Run Code Online (Sandbox Code Playgroud)
被调用,参数是
url=http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398
navigationType=UIWebViewNavigationTypeLinkClicked
Run Code Online (Sandbox Code Playgroud)
如果委托方法返回YES以指示UIWebView应该继续并打开链接,则会立即触发对委托的新调用,这次参数是
url=http://maps.google.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398
navigationType=UIWebViewNavigationTypeLinkClicked
Run Code Online (Sandbox Code Playgroud)
YES可以预见,返回到此结果会导致我的UIWebView中的maps.google.com网页打开.但实际上我确实想要推出iOS6 Apple Maps应用程序.我可以尝试CLGeocoder创建一个MKMapItemURL,如何在iOS 6中启动具有特定地址的iOS Maps App?,但CLGeocoder似乎想要纯文本,而不是一个带有所有常规注释的url,相当详细的解析工作.如果我以不同于Mobile safari的方式解析URL,那么我可能会看到不同的地图结果,具体取决于我是否通过我的UIWebView或Safari从相同的初始链接到达地图应用程序.
有没有办法让UIWebView从链接打开iOS6 Apple Maps应用程序,而无需解析然后对URL进行地理编码?
另外,在使用maps.google.com url调用我的委托方法后,使用以下参数调用它两次:
url=about:blank
navigationType=UIWebViewNavigationTypeOther
Run Code Online (Sandbox Code Playgroud)
并且最终对显示器没有影响.知道这是什么意思吗?
是的,有一种方法可以从 UIWebview 打开 Maps.apple.com 链接到地图应用程序。不要让 UIWebview 直接打开链接,而是将其传递给操作系统进行整理。在 中webView: shouldStartLoadWithRequest: navigationType:,我查找地图链接并特别对待它:
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;
}
Run Code Online (Sandbox Code Playgroud)
这会在 iOS6 中打开 Apple 地图应用程序。在iOS5中,它将在Safari中打开谷歌地图网页。我将寻找 iOS5 系统并在那里以不同的方式处理 URL。
| 归档时间: |
|
| 查看次数: |
3559 次 |
| 最近记录: |