0

看看下面的代码它工作正常

NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps?daddr=%f,%f&saddr=%f,%f", 23.0300, 72.5800, 22.3000, 70.7833];    
NSString *escapedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    
NSURL *url=[NSURL URLWithString:escapedString];
[[UIApplication sharedApplication]openURL:url];

但它会在 Safari 浏览器中打开地图。

之后我尝试了下面的代码

NSString *urlString = [NSString stringWithFormat:@"http://maps.apple.com/maps?daddr=%f,%f&saddr=%f,%f", 23.0300, 72.5800, 22.3000, 70.7833];    
NSString *escapedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    
NSURL *url=[NSURL URLWithString:escapedString];
[[UIApplication sharedApplication]openURL:url];

它根据我的需要打开地图应用程序,但没有给我路线的方向结果或上面谷歌地图给出的相同结果我如何才能在地图应用程序中实现第一个代码的结果?

请帮忙!!

4

1 回答 1

2

Apple 的地图没有与谷歌地图相同的 API,因此您的 URL 将不起作用。苹果在 iOS 6 中引入了MKMapItem允许开发人员与 maps.app 交互的功能。

如果您想继续通过 http 使用地图,那么您应该更改您的网址:

NSString *urlString = [NSString stringWithFormat:@"http://maps.apple.com/?daddr=%f,%f&saddr=%f,%f", 23.0300, 72.5800, 22.3000, 70.7833];    
NSString *escapedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    
NSURL *url=[NSURL URLWithString:escapedString];
[[UIApplication sharedApplication]openURL:url];

Apple URL Scheme Reference中所述,您不应添加/maps/路径。

不包含路径参数或包含特定地图路径的 URL 在 Safari 中打开并显示在那里。例如,基于路径http://maps.apple.com/http://maps.apple.com/mapshttp://maps.apple.com/localhttp://maps 的 URL。 apple.com/m都在 Safari 中打开。要在地图应用程序中打开 URL,路径的格式必须为http://maps.apple.com/?q

创建有效地图链接的规则如下:

  • 域必须是 maps.apple.com。
  • 路径不能是 /maps/*。
  • 如果值为 URL,则参数不能为 q=*(因此不会提取 KML)。
  • 参数不能包含 view=text 或 dirflg=r
于 2013-10-30T10:36:08.227 回答