【发布时间】:2011-10-26 19:40:40
【问题描述】:
我正在编写一个应用程序,我希望用户能够在其中获取路线。我知道谷歌 API,并且我已经实现了,但我想知道如何直接跳转到本地地图应用程序并为用户提供方向。我想我以前见过它,但我可能弄错了。
非常感谢任何帮助。
【问题讨论】:
标签: objective-c ios map mapkit
我正在编写一个应用程序,我希望用户能够在其中获取路线。我知道谷歌 API,并且我已经实现了,但我想知道如何直接跳转到本地地图应用程序并为用户提供方向。我想我以前见过它,但我可能弄错了。
非常感谢任何帮助。
【问题讨论】:
标签: objective-c ios map mapkit
您可以使用指向 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]]];
}
【讨论】:
http://maps.google.com/maps?saddr40.072318,-75.130032&daddr=40.095203,-75.125366
saddr 之后缺少一个等号,顺便说一句。)
你可以使用这个:
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 有任何问题,祝您好运并在下方评论:)
【讨论】:
很简单
UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=London"]];
像接吻一样简单
【讨论】:
@Moshe
请注意,在未安装地图的设备上(不确定是否存在)
以 iPhone 模拟器为例。
【讨论】: