地图应用无效

时间:2013-10-30 10:23:56

标签: ios iphone google-maps map mapkit

看看下面的代码是否正常工作

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

它按照我的意愿打开地图应用程序,但没有给我路线的方向性结果或上面谷歌地图给出的相同结果如何在地图应用程序中作为第一个代码实现结果?

请帮助!!

1 个答案:

答案 0 :(得分:2)

Apple的地图与Google地图没有相同的API,因此您的网址无效。 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/路径。

  

不包含路径参数或包含特定地图的网址   路径在Safari中打开并显示在那里。例如,URL   根据路径http://maps.apple.com/http://maps.apple.com/maps,   http://maps.apple.com/localhttp://maps.apple.com/m都是。http://maps.apple.com/?q   在Safari中打开。要在地图应用中打开网址,路径必须为   表格{{3}}。

     

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

     
      
  • 域名必须是maps.apple.com。
  •   
  • 路径不能是/ maps / *。
  •   
  • 如果值是URL,则参数不能为q = *(因此未拾取KML)。
  •   
  • 参数不能包含view = text或dirflg = r
  •