我正在使用 iOS 6.0 SDK,我想使用 Apple 的新 iOS 6.0 地图在两个不同的地址(不是纬度和经度)之间进行路由。我也想显示迹象。
我怎样才能做到这一点?
上周我考虑这样做,但没有找到办法。似乎您可以提供目的地,并且您可以提供的不仅仅是坐标,但它始终假定您的起始位置是当前位置。当您可能正在计划旅行而您当前不在起始位置时,这会受到限制。(但也许我只是没有看到它是如何完成的,如果这是真的,我希望有人能纠正我。)
不久前,我研究了 iOS 6 的路由选项并在这里收集了结果......
您可能仍然无法使用您想要的确切路线打开 Apple Maps,但也许您可以在您自己的实例 MKMapView 上绘制带有覆盖和注释的路线。这可能是你目前能做的最好的事情。
下面是我用来路由到某个位置并为目的地提供至少一个标签的代码,而不是只保留坐标。我发现简单地给目的地一个带有完整地址详细信息的标签是行不通的,所以我只提供一个值。
if (flag != DirectionsFlag_PublicTransit && itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {
NSDictionary *address = @{ (NSString *)kABPersonAddressStreetKey : location.title };
MKPlacemark *destinationPlacemark = [[MKPlacemark alloc] initWithCoordinate:location.coordinate addressDictionary:address];
MKMapItem *destinationMapItem = [[MKMapItem alloc] initWithPlacemark:destinationPlacemark];
if (flag == DirectionsFlag_Driving) {
[destinationMapItem openInMapsWithLaunchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving}];
}
else if (flag == DirectionsFlag_Walking) {
[destinationMapItem openInMapsWithLaunchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeWalking}];
}
}
此代码特别不处理公共交通路线,因为 Apple Maps 不这样做。相反,我让它使用我之前使用的 URL 打开谷歌地图,现在打开 Safari 以获取这些方向。该标志是驾驶、步行或公共交通的枚举值。该位置是一个模型,其中包含各种详细信息,包括标题和坐标。