在IOS 6之前,我使用此URL方案打开原生地图应用,并查找从用户当前位置到我创建的地址的路线。
http://maps.google.com/maps?daddr=“+地址+”& saddr =当前+位置
这很好用,但现在他们用IOS 6摆脱谷歌地图,我们必须检查他们所在的IOS版本,然后如果他们使用IOS 6.0或更高版本,则将它们引用到新的苹果地图网址方案。我们正在使用的新网址方案就是这个....
http://maps.apple.com/maps?daddr=“+地址+”& saddr =当前+位置
这是基于地图网址方案的新文档,可在此处找到..
无论如何,我已经测试了一堆,它归结为新的苹果地图确实识别当前位置,就像谷歌地图一样。
有谁知道我如何解决这个问题?
请记住我正在构建一个带有手机间隙的html应用,因此使用本机代码将起始地址设置为当前位置对我没有帮助。
答案 0 :(得分:10)
我遇到了同样的问题。我还没有找到解决办法,但如果你放弃了悲伤
http://maps.apple.com/maps?daddr=" + address
它只会询问他们从哪里开始,第一个选项是“当前位置”,所以当他们点击“当前位置”时,它会正确显示地图。
如果有人找到更好的解决方案,请发布,因为我仍在寻找更好的解决方案。
答案 1 :(得分:3)
您可以使用我的方法:
<script type="text/javascript">
var link = "maps:saddr=YPlat,YPlong&daddr=42.118599,-72.625122";
navigator.geolocation.getCurrentPosition(showPosition);
function showPosition(position)
{
link = link.replace("YPlat",position.coords.latitude);
link = link.replace("YPlong",position.coords.longitude);
window.location = link;
}
</script>
通过iOS 5.1和iOS 6确认
答案 2 :(得分:3)
只需将“当前位置”作为源地址传递:
http://maps.apple.com/maps?saddr=Current%20Location&daddr=Your_Address
答案 3 :(得分:2)
您可以使用由DKLocationManager创建的CLLocationManager或其包装Keith Pitt(在github上)获取当前位置的坐标。
获得坐标后,可以使用以下代码示例。
+ (void) openDirectionFrom:CLLocation* currentLocation To:(NSString*) daddr {
NSString* urlStr;
NSString* saddr = @"Current+Location";
if ([[UIDevice currentDevice] systemVersion] floatValue] >=6) {
//iOS 6+, Should use map.apple.com. Current Location doesn't work in iOS 6 . Must provide the coordinate.
if ((currentLocation.coordinate.latitude != kCLLocationCoordinate2DInvalid.latitude) && (currentLocation.coordinate.longitude != kCLLocationCoordinate2DInvalid.longitude)) {
//Valid location.
saddr = [NSString stringWithFormat:@"%f,%f", currentLocation.coordinate.latitude,currentLocation.coordinate.longitude];
urlStr = [NSString stringWithFormat:@"http://maps.apple.com/maps?saddr=%@&daddr=%@", saddr, daddr];
} else {
//Invalid location. Location Service disabled.
urlStr = [NSString stringWithFormat:@"http://maps.apple.com/maps?daddr=%@", daddr];
}
} else {
// < iOS 6. Use maps.google.com
urlStr = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%@&daddr=%@", saddr, daddr];
}
[(UIApplicationWithEvents*)[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
}