Подтвердить что ты не робот

Как я могу запустить приложение iPhone для Google Карт из собственного собственного приложения?

Документация разработчика Apple (ссылка сейчас мертва) объясняет, что если вы поместите ссылку на веб-страницу, а затем щелкните по ней при использовании Mobile Safari на iPhone, приложение Google Maps, предоставляемое стандартным для iPhone, запустится.

Как я могу запустить одно и то же приложение Google Maps с определенным адресом из моего собственного приложения iPhone (т.е. не веб-страницу через Mobile Safari) так же, как при нажатии на адрес в контактах запускается карта?

ПРИМЕЧАНИЕ: ЭТО ТОЛЬКО РАБОТАЕТ НА САМОМ УСТРОЙСТВЕ. НЕ В СИМУЛЯТОРЕ.

4b9b3361

Ответ 1

Для iOS 5.1.1 и ниже используйте openURL метод UIApplication. Он будет выполнять обычную интерпретацию URL-адреса iPhone. так

[someUIApplication openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=London"]]

следует использовать приложение Google maps.

Из iOS 6 вы будете использовать приложение Apple Maps. Для этого настройте объект MKMapItem с указанием местоположения, которое вы хотите отобразить, и затем отправьте сообщение openInMapsWithLaunchOptions. Чтобы начать с текущего местоположения, попробуйте:

[[MKMapItem mapItemForCurrentLocation] openInMapsWithLaunchOptions:nil];

Для этого вам нужно будет привязаться к MapKit (и я думаю, что он будет запрашивать доступ к местоположению).

Ответ 2

Совершенно верно. Код, который вам нужен для этого, выглядит примерно так:

UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]];

поскольку согласно документации, UIApplication доступен только в делетете приложения, если вы не вызываете sharedApplication.

Ответ 3

Чтобы открыть Карты Google в определенных координатах, попробуйте этот код:

NSString *latlong = @"-56.568545,1.256281";
NSString *url = [NSString stringWithFormat: @"http://maps.google.com/maps?ll=%@",
[latlong stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];

Вы можете заменить строку latlong текущим местоположением из CoreLocation.

Вы также можете указать уровень масштабирования, используя флаг ( "z" ). Значения: 1-19. Вот пример:

[[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ " http://maps.google.com/maps?z=8" ]];

Ответ 4

В App Store также есть приложение Google Maps, зарегистрированное на https://developers.google.com/maps/documentation/ios/urlscheme

Итак, вы должны сначала проверить, что он установлен:

[[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps://"]];

И затем вы можете условно заменить http://maps.google.com/maps?q= на comgooglemaps://?q=.

Ответ 5

Здесь ссылка на ссылку URL-адреса Apple для ссылок на карты: http://developer.apple.com/iphone/library/featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html

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

  • Домен должен быть google.com, а субдомен должен быть картами или ditu.
  • Путь должен быть /,/maps,/local или/m, если запрос содержит сайт как ключ и локальный как значение.
  • Путь не может быть /maps/ *.
  • Все параметры должны поддерживаться. См. Таблицу 1 для списка поддерживаемых параметров **.
  • Параметр не может быть q = *, если значение является URL-адресом (поэтому KML не подбирается).
  • Параметры не могут включать view = text или dirflg = r.

** См. приведенную выше ссылку для списка поддерживаемых параметров.

Ответ 6

Если вы используете ios 10, пожалуйста, не забудьте добавить Схемы запросов в Info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>comgooglemaps</string>
</array>

Если вы используете objective-c

if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString:@"comgooglemaps:"]]) {
    NSString *urlString = [NSString stringWithFormat:@"comgooglemaps://?ll=%@,%@",destinationLatitude,destinationLongitude];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
    } else { 
    NSString *string = [NSString stringWithFormat:@"http://maps.google.com/maps?ll=%@,%@",destinationLatitude,destinationLongitude];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:string]];
    }

Если вы используете быстрый 2.2

if UIApplication.sharedApplication().canOpenURL(NSURL(string: "comgooglemaps:")!) {
    var urlString = "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)"
    UIApplication.sharedApplication().openURL(NSURL(string: urlString)!)
}
else {
    var string = "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)"
    UIApplication.sharedApplication().openURL(NSURL(string: string)!)
}

Если вы используете swift 3.0

if UIApplication.shared.canOpenURL(URL(string: "comgooglemaps:")!) {
    var urlString = "comgooglemaps://?ll=\(destinationLatitude),\(destinationLongitude)"
    UIApplication.shared.openURL(URL(string: urlString)!)
}
else {
    var string = "http://maps.google.com/maps?ll=\(destinationLatitude),\(destinationLongitude)"
    UIApplication.shared.openURL(URL(string: string)!)
}

Ответ 7

За вопрос о телефоне, вы тестируете на симуляторе? Это работает только на самом устройстве.

Кроме того, openURL возвращает bool, который вы можете использовать, чтобы проверить, поддерживает ли устройство, на котором вы работаете, функциональность. Например, вы не можете совершать вызовы на iPod Touch: -)

Ответ 8

"g" изменить на "q"

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=London"]]

Ответ 9

Если у вас все еще есть проблемы, это видео показывает, как получить "Мои карты" из Google, чтобы появиться на iphone - вы можете взять ссылку и отправить ее кому угодно, и она работает.

http://www.youtube.com/watch?v=Xo5tPjsFBX4

Ответ 10

Для перехода на карту Google используйте эту api и отправьте целевую широту и долготу

NSString* addr = nil;
     addr = [NSString stringWithFormat:@"http://maps.google.com/maps?daddr=%1.6f,%1.6f&saddr=Posizione attuale", destinationLat,destinationLong];

NSURL* url = [[NSURL alloc] initWithString:[addr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];

Ответ 11

Если вам нужна больше гибкости, чем формат URL-адреса Google, вы хотите вставить карту в свое приложение, а не запускать приложение карты здесь пример.

Он даже предоставит вам исходный код, чтобы сделать все вложение.

Ответ 12

Если вам нужна более гибкая форма, чем формат URL-адреса Google, или вы хотите вставить карту в свое приложение, а не запускать приложение карты, есть пример, найденный в https://sourceforge.net/projects/quickconnect.

Ответ 13

iPhone4 iOS 6.0.1 (10A523)

Для Safari и Chrome. И последняя версия до сих пор (2013-июнь-10-е).

Также работает схема URL ниже. Но в случае, если Chrome работает только внутри страницы, это не работает из адресной строки.

карты: Q = GivenTitle @широты, долготы

Ответ 14

**Getting Directions between 2 locations**

        NSString *googleMapUrlString = [NSString stringWithFormat:@"http://maps.google.com/?saddr=%@,%@&daddr=%@,%@", @"30.7046", @"76.7179", @"30.4414", @"76.1617"];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:googleMapUrlString]];