从代码中打开地图应用程序 - 在哪里/如何找到"当前位置"?

Emp*_*ack 7 iphone google-maps core-location ios

我打开地图应用程序,从我的代码中显示从用户的当前位置到目标坐标的路线.我使用以下代码打开地图应用.我按下按钮时调用此代码.getCurrentLocation是一种返回最近更新位置的方法.

- (void)showDirectionsToHere {

    CLLocationCoordinate2D currentLocation = [self getCurrentLocation];  // LINE 1
    NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f", 
                                                  currentLocation.latitude,
                                                  currentLocation.longitude, 
                                                  destCoordinate.latitude, 
                                                  destCoordinate.longitude];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
Run Code Online (Sandbox Code Playgroud)

这里[self getCurrentLocation]LINE 1中用于CLLocationManager确定当前位置并返回该值.

注意:我还没有在LINE1中实现代码.我刚刚计划这样做.

我的问题是:

  1. 这是一个很好的做法,在调用地图应用程序时计算当前位置?
  2. [self getCurrentLocationopenURL被叫之前返回当前位置吗?
  3. 在打开地图应用之前,我是否必须确定当前位置?

我对这些事情有点困惑.请指导我.谢谢.

Mat*_*ick 11

您不必自己确定用户的当前位置,地图应用程序将负责处理.

您可以通过Current%%20Location而不是传递纬度/经度对,而地图将确定用户当前的位置.

%20是一个url编码的空格字符,额外的%转义符合实际值,%因此不会被解释为格式替换.


感谢@Carlos P在原始答案中指出我的逃脱角色错误.

  • 任何人都可以在iPad上使用它吗?在iPhone/iPod touch上它很好,但在iPad上似乎从"Current,MO"开始.:-o (2认同)
  • @MatthewF和其他人 - 我对这些评论感到困惑,因为逃避百分号的正确方法是%%,除非我弄错了.事实上,我已经尝试了\%,它根本没有解决成百分号,它产生了一个随机的数字系列.因此,对于未来的读者,我可以建议:http://maps.google.com/maps?saddr =当前%% 20Location&daddr ..... (2认同)

小智 7

使用"当前位置"作为saddr仅在用户将系统语言设置为英语时才有效.最好的选择是从Core Location获取当前位置并将其用作saddr.


小智 5

正如pazustep指出的那样,"当前位置"仅适用于英语.例如,在意大利语中,正确的字符串是"Posizione attuale".

在iPhone固件中嗅探我检测到了所有"当前位置"的翻译,我写了一个类,它提供了任何(当前)支持的语言所需的正确字符串.

我的博客上有一篇关于此的帖子(包括源代码):http://www.martip.net/blog/localized-current-location-string-for-iphone-apps.