Как вызвать iPhone Maps для Направлений с Текущим Местоположением как Начальный адрес

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

Вы также не можете запросить документ, основанный только на существовании поля.

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

72
задан Vadim Kotov 18 September 2017 в 11:20
поделиться

3 ответа

Из-за игры в песочнице у Вас нет доступа к закладкам Приложения карты.

Вместо этого используйте Базовое Местоположение для определения текущего местоположения сами. Затем используйте то местоположение (lat и долго) в URL, который Вы создаете для открытия Maps.

5
ответ дан August 24 November 2019 в 12:30
поделиться

До iOS 6

Вам нужно использовать Core Location, чтобы получить текущее местоположение, но с этой парой широта / долгота вы можете заставить Карты направить вас оттуда к почтовому адресу или местоположение. Примерно так:

CLLocationCoordinate2D currentLocation = [self getCurrentLocation];
// this uses an address for the destination.  can use lat/long, too with %f,%f format
NSString* address = @"123 Main St., New York, NY, 10001";
NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%@",
                    currentLocation.latitude, currentLocation.longitude,
                    [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];

Наконец, если вы действительно не хотите использовать CoreLocation для явного поиска текущего местоположения и хотите использовать @ "http://maps.google.com/maps?saddr=Current+Location&daddr =% @ " url, затем см. Эту ссылку, которую я предоставил в комментариях ниже , чтобы узнать, как локализовать строку Current + Location . Однако вы используете еще одну недокументированную функцию, и, как указывает Джейсон МакКрири ниже, она может работать ненадежно в будущих выпусках.


Обновление для iOS 6

Изначально Карты использовали карты Google. , но сейчас, Apple и Google имеют отдельные приложения для карт.

1) Если вы хотите проложить маршрут с помощью приложения Google Maps, используйте схему URL comgooglemaps :

NSString* url = [NSString stringWithFormat: @"comgooglemaps://?daddr=%@&directionsmode=driving",
                    [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
BOOL opened = [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];

2) Чтобы использовать Apple Maps, вы можете использовать новый Класс MKMapItem для iOS 6. См. Документацию Apple API здесь

По сути, вы будете использовать что-то вроде этого, если маршрутизация к месту назначения координаты ( latlong ]):

    MKPlacemark* place = [[MKPlacemark alloc] initWithCoordinate: latlong addressDictionary: nil];
    MKMapItem* destination = [[MKMapItem alloc] initWithPlacemark: place];
    destination.name = @"Name Here!";
    NSArray* items = [[NSArray alloc] initWithObjects: destination, nil];
    NSDictionary* options = [[NSDictionary alloc] initWithObjectsAndKeys:
                                 MKLaunchOptionsDirectionsModeDriving, 
                                 MKLaunchOptionsDirectionsModeKey, nil];
    [MKMapItem openMapsWithItems: items launchOptions: options];

Чтобы поддерживать как iOS 6+, так и предыдущие версии iOS 6 в одном коде, я бы рекомендовал использовать что-то вроде этого кода, который Apple имеет на странице документации API MKMapItem :

Class itemClass = [MKMapItem class];
if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {
   // iOS 6 MKMapItem available
} else {
   // use pre iOS 6 technique
}

Предполагается, что ваш Xcode Base SDK - это iOS 6 (или Последняя версия iOS ).

133
ответ дан 24 November 2019 в 12:30
поделиться

Теперь вы можете сделать это в HTML только с URL-адреса вашего мобильного устройства. Вот пример . Круто то, что если вы превратите это в qr-код, у вас есть способ указать дорогу к вам, где бы он ни находился, просто отсканировав его на своем телефоне.

2
ответ дан 24 November 2019 в 12:30
поделиться