Из iOS Mapkit в Google Maps? - PullRequest
       65

Из iOS Mapkit в Google Maps?

1 голос
/ 28 января 2012

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

Единственная идея, которая у меня возникла, это нажать веб-представление, открывающее URL-адрес в Картах Google с нужными координатами,Есть ли много эффективных и полезных способов сделать это?Есть еще идеи?

Заранее спасибо, ясса

Ответы [ 2 ]

2 голосов
/ 28 января 2012

Вы должны решить, хотите ли вы встроить UIWebView или позволить пользователю перейти в приложение карт. Вы теряете «пользовательское соединение», если вы отпускаете пользователя из своего приложения, но взаимодействие с пользователем в приложении карт намного лучше, чем в Интернете. По этой причине я пошел с приложением карт.

См. http://wiki.akosma.com/IPhone_URL_Schemes#Maps о том, как запустить приложение карт с помощью UIApplication openURL.

Обратите внимание, что если приложение карт не установлено (только симулятор?), Это откроет веб-страницу, но в Safari, а не во встроенном UIWebView.

1 голос
/ 23 декабря 2013

На самом деле, в iOS7 вы можете давать указания в вашем приложении, используя MapKit. Здесь - мой источник.И я цитирую:

MKDirectionRequest и MKDirectionResponse Многие мобильные пользователи полагаются на указания со своего устройства, и в iOS 7 разработчики теперь могут предоставлять их в контексте вашего приложения вместо переключения на приложение «Карты».Вы начинаете свой запрос с источника и назначения.Другие варианты включают альтернативные маршруты, тип транспорта и время отправления / прибытия.

MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init]; 
> request.source = source;  request.destination = destination; 
> request.requestsAlternateRoutes = YES;    MKDirections *directions =
> [[MKDirections alloc] initWithRequest:request];  [directions
> calculateDirectionsWithCompletionHandler: ^(MKDirectionsResponse
> *response, NSError *error) {      if (error) {        NSLog(@"Error is %@",error);    } else {        [self showDirections:response];     }  }];

MKDirectionsResponse предоставляет множество информации, которая включает в себя массив MKRoutes,каждый из которых содержит массив MKRouteStep, чтобы вы могли предоставить каждый шаг указаний, чтобы доставить пользователя к его местоположению.Поместив MKRoute и MKRouteSteps в массив, можно легко отображать информацию в таблице или отображать информацию на карте следующим образом:

for (MKRoute *route in _response.routes) {      [_mapView
> addOverlay:route.polyline level: MKOverlayLevelAboveRoads];  }

Результаты могут обновлятьсячасто, когда пользователь перемещается со своим устройством, поэтому не следует долго кешировать результаты.

С помощью аналогичной функции в API Карт Google, Google накладывает ограничение на количество запросов, которые ваше приложение может иметь в день.,Вместо этого Apple решила пойти по другому пути и ограничить скорость для каждого устройства, что означает, что для каждого приложения или разработчика нет ограничений на использование.Устройство может быть перегружено, если оно достигает высокого уровня использования, которое предназначено для ограничения приложений, которые будут выполнять что-то вроде рекурсивного выполнения запросов.

Извините, если этот ответ отформатирован странным образом, я нахожу все эти кавычки иформатирование кода сложно.Надеюсь, это поможет.

...