【问题标题】:Go to iPhone maps app from another app从另一个应用程序转到 iPhone 地图应用程序
【发布时间】:2011-10-26 19:40:40
【问题描述】:

我正在编写一个应用程序,我希望用户能够在其中获取路线。我知道谷歌 API,并且我已经实现了,但我想知道如何直接跳转到本地地图应用程序并为用户提供方向。我想我以前见过它,但我可能弄错了。

非常感谢任何帮助。

【问题讨论】:

    标签: objective-c ios map mapkit


    【解决方案1】:

    您可以使用指向 Google 地图的常规 URL 打开地图应用程序。来自Apple URL Scheme reference

    地图 URL 方案用于显示地理位置和生成两点之间的行车路线。如果您的应用程序包含地址或位置信息,您可以使用地图链接将该信息转发到 iOS 上的地图应用程序和其他平台上的 Google 地图网站。

    与某些方案不同,地图 URL 不以“地图”方案标识符开头。相反,地图链接被指定为常规的 http 链接,但以 Google 地图服务器为目标。以下示例显示了您将在 Safari 和本机应用程序中使用的字符串,以显示加利福尼亚州库比蒂诺市的地图。

    • HTML 链接:

    <a href="http://maps.google.com/maps?q=cupertino">Cupertino</a>

    请注意,在未安装地图的设备上(不确定是否存在),该链接将在常规浏览器中打开,因为它只是一个 HTTP 链接。

    要打开 URL,您可以在 UIWebView 中显示链接,也可以使用代码打开它。例如:

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=Cupertino"]];

    如果你想传入一个自定义位置并在用户点击按钮时打开它,你可以做一个这样的方法:

    - (IBAction) openMapsAppAndShowLocation:(NSString *)locationToShow{
    
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.google.com/maps?q=%@", locationToShow]]];
    
    }
    

    如果您愿意,您也可以重构该方法以获取纬度/经度对。可能看起来像这样:

    - (IBAction) openMapsAppAndShowLatitude:(double)latitude andLongitude:(double)longitude{
    
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.google.com/maps?q=\"%f,%f\"", latitide, longitude]]];
    
    }
    

    【讨论】:

    • 谢谢!那么问题来了:为什么这个 URL 没有把我带到地图应用程序? http://maps.google.com/maps?saddr40.072318,-75.130032&daddr=40.095203,-75.125366
    • @Mason - 会发生什么?看来您在 saddr 之后缺少一个等号,顺便说一句。)
    • 啊,就是这样!太尴尬了,对不起。非常感谢!
    • 不用担心。 :-) 祝你好运。
    【解决方案2】:

    你可以使用这个:

    NSString *latlong = @"-56.568545,1.256281";
    NSString *url = [NSString stringWithFormat: @"http://maps.google.com/maps?ll=%@",
    [latlong stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
    

    这个,

    UIApplication *app = [UIApplication sharedApplication];
    [app openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]];
    

    或者这个

    [someUIApplication openURL:[[NSURL alloc] initWithString: @"http://maps.google.com/maps?q=London"]]
    

    您甚至可以使用 z 标志指定缩放级别(值在 1-19 之间):

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://maps.google.com/maps?z=8"]];
    

    这应该会调用 Google 地图应用。我认为这些说明仅适用于实际设备,不适用于模拟器。如果您对 sn-ps 有任何问题,祝您好运并在下方评论:)

    【讨论】:

      【解决方案3】:

      很简单

      UIApplication *app = [UIApplication sharedApplication];  
      [app openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=London"]]; 
      

      像接吻一样简单

      【讨论】:

        【解决方案4】:

        @Moshe

        请注意,在未安装地图的设备上(不确定是否存在)

        以 iPhone 模拟器为例。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-19
          • 2012-06-15
          相关资源
          最近更新 更多