Переход с Google Maps на MapKit на iOS - PullRequest
0 голосов
/ 15 декабря 2010

В настоящее время я использую следующий код:

UIApplication *app = [UIApplication sharedApplication];  
[app openURL:[NSURL URLWithString:@"http://maps.google.com/maps?saddr=Current%20Location&daddr=Chicago"]];

Он отлично работает для открытия направлений в приложении Google Maps.Если бы я хотел сделать это ТОЧНО то же самое, только в самом приложении, как бы я это сделал?У меня в настоящее время есть настроенный viewController, у которого есть экземпляр MKMapView, но он показывает весь мир.Все работает нормально, но как только я пытаюсь прочитать документацию Apple по аннотациям, у меня начинает кружиться голова.

Ответы [ 2 ]

1 голос
/ 15 декабря 2010

Часть аннотаций довольно проста, когда вы оборачиваете ее вокруг, но часть рисования пути - это огромная проблема.Я делаю это в одном из моих приложений , и потребовалось много работы, чтобы не просто нарисовать линии и сохранить их масштабированные и тому подобное, но, что более важно, сделать это быстро и эффективно с точки зрения памяти, если пользовательОпределяет маршрут, который состоит буквально из сотен шагов (например, по шоссе, избегающему шоссе).

Если бы маршрутизация не была в центре внимания вашего приложения, я бы не стал беспокоиться.Если вы по-прежнему очень хотите, я вернусь, рассмотрю код и предоставлю несколько указателей.Просто будьте предупреждены, что это удивительно много.

0 голосов
/ 15 декабря 2010

Я предполагаю, что вы выполняете поиск адреса и отображаете его в своем приложении.Вы можете использовать Geocoder API для поиска с границами (или без них).Я использую этот формат NSString: NSString *geocoderURLFormat = @"http://maps.googleapis.com/maps/api/geocode/json?address=%@&bounds=%@&sensor=true".

Обратный вызов от этого вызова вернет предложенный видовой экран для местоположения - юго-западное и северо-восточное значения широты / долготы.Используя их, вы можете установить область объекта MKMapView следующим образом:

CLLocationCoordinate2D coord;
coord.latitude = location.latitude;
coord.longitude = location.longitude;

MKCoordinateSpan span;
span.latitudeDelta = location.swLatitude > location.neLatitude ? location.swLatitude - location.neLatitude : location.neLatitude - location.swLatitude;
span.longitudeDelta = location.swLongitude > location.neLongitude ? location.swLongitude - location.neLongitude : location.neLongitude - location.swLongitude;

MKCoordinateRegion region;
region.span = span;
region.center = coord;

[mapView setRegion:region animated:YES];

Обратите внимание, что я все еще немного размыт относительно значений latitudeDelta и longitudeDelta MKCoordinateSpan,отсюда и уродство кода.И переменная location, которую я использую, создана из результатов вызова Geocoder.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...