Как проложить маршрут между двумя адресами, используя новые карты iOS 6.0?
Я использую iOS 6.0 SDK, и я хотел бы проложить маршрут между двумя разными адресами (не широтой и долготой) с новыми картами Apple iOS 6.0. Я бы тоже хотел показать показания.
Как я могу это сделать?
1 ответ
Я пытался сделать это на прошлой неделе и не придумал, как это сделать. Кажется, что вы можете указать пункт назначения, и вы можете дать ему больше, чем просто координаты, но он всегда предполагает, что ваша начальная позиция является текущим местоположением. Это ограничивает, когда вы планируете поездку, пока вы не находитесь в начальной точке. (Но, возможно, я просто не вижу, как это делается, и я надеюсь, что кто-то может исправить меня, если это правда.)
Некоторое время назад я изучил параметры маршрутизации для 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 не делает этого. Вместо этого я открываю Карты Google с URL-адресом, который использовал ранее, и теперь открывает Safari для этих направлений. Флаг - это перечисляемое значение "Вождение", "Ходьба" или "Общественный транспорт". Местоположение является моделью, которая содержит различные детали, включая заголовок и координаты.