![](/img/trans.png)
[英]iPhone Google Maps app open from iOS App, only shows coordinates not location name.
[英]open google maps app from a browser with default start location on android and iphone
我有一个移动网站,我有一个链接,可以使用链接格式打开 iphone 和 android 上的谷歌地图本机应用程序,默认开始和结束位置: http://maps.google.com/maps?saddr=XX&daddr=二十。
我的问题是,我希望能够将起始位置设置为当前位置,并且我希望它可以在 android 和 iphone 浏览器上工作。 根据我的经验,如果我将 saddr 留空,在 android 中,它默认为当前位置,但在 iphone 上它只是将起始位置留空。 如果我将saddr 设置为“当前位置”,这会将起始位置设置为iphone 上的当前位置,但在android 上它无法识别该位置。
我现在的解决方案是使用用户的地理纬度/经度坐标作为起始地址。 这在两个平台上都能成功运行,但取决于用于获取坐标的方法,它可能不如应用程序上 gps 的用户当前位置准确。 我想知道是否有某种方法可以获取链接以打开具有正确“当前位置”作为起点的本机应用程序。 我知道我也可以有条件地检查用户代理并相应地创建链接,但我希望有一种更优雅的方式来做到这一点。
我只需将以下字符串中的值替换为我的起始和目标 Lng/Lat
http://maps.google.com/maps?saddr=START_ADD&daddr=DEST_ADD&ll=START_ADD
然后我在 android 中像这样启动 url,这将让用户选择使用浏览器或他们的本机地图应用程序:
String url = "http://maps.google.com/maps?saddr=START_ADD&daddr=DEST_ADD&ll=START_ADD";
startActivity( new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url)));
对于 iOS,如果您在 url 前面加上 maps:// 而不是 http://,它将在手机上启动地图应用程序,该应用程序运行良好。 就像是
NSString *url = @"maps://maps.google.com/maps?saddr=START_ADD&daddr=DEST_ADD&ll=START_ADD";
[[UIApplication sharedApplication] openURL:[NSURL urlWithString:url]];
这就是我选择的处理方式。 在任一设备上使用各自的位置框架获取当前的 Lng/Lat 都非常容易。 结果对我来说似乎也总是很准确,您可以指定您想要结果的准确程度。 越准确,电池消耗越多,有时需要更长的时间才能获取,但这通常是您最终调整的内容,以获得最佳实施结果。
看看 url 处理程序 geo 告诉浏览器使用原生 App
<a href="geo:50.066274, 10.754427;">Location here!</a>
有一个可用的 polyfill 脚本,值得一试作为桌面浏览器的后备: https://github.com/prowestgis/dojo-geo-uri-polyfill
您也可以尝试 IOs 设备:
comgooglemaps://?parameters
或者:
comgooglemaps-x-callback://?parameters
https://developers.google.com/maps/documentation/urls/ios-urlscheme
我知道我也可以有条件地检查用户代理并相应地创建链接,但我希望有一种更优雅的方式来做到这一点。
这是最优雅的解决方案。 这两个平台差异太大,要使用两个平台的相同链接来执行此操作。 在等式中添加 Blackberry 或 Windows Phone,如果不检查用户代理,您将更难以实现相同的行为
在 Iphone 中,您可以通过以下方法使用CLLocationManagerDelegate获取当前位置。
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
CLLocationCoordinate2D location = newLocation.coordinate;
Float x = location.latitude, y = location.longitude;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.