открыть приложение Google Maps из браузера с местоположением по умолчанию на Android и iPhone - PullRequest
13 голосов
/ 15 июля 2011

У меня есть мобильный сайт, и у меня есть ссылка, с помощью которой можно открыть родное приложение карт Google на iphone и Android с начальным и конечным местоположением по умолчанию, используя формат ссылки: http://maps.google.com/maps?saddr=XX&daddr=XX.

Моя проблема в том, что я хочу иметь возможность установить начальное местоположение в качестве текущего местоположения, и я хочу, чтобы оно работало из браузеров Android и Iphone. Исходя из моего опыта, если я оставляю saddr пустым, в Android по умолчанию это текущее местоположение, но на iphone оно просто оставляет начальное местоположение пустым. Если я установлю saddr в «текущее местоположение», это установит начальное местоположение в качестве текущего местоположения на iphone, но на андроиде оно не распознает местоположение.

Мое решение сейчас состоит в том, чтобы использовать географические координаты / длинные координаты пользователя в качестве начального адреса. Это успешно работает на обеих платформах, но в зависимости от метода, используемого для получения координат, оно может быть не таким точным, как текущее местоположение пользователя из gps в приложении. Мне было интересно, есть ли какой-нибудь способ получить ссылку, чтобы открыть собственное приложение с правильным «текущим местоположением» для начальной точки. Я знаю, что мог бы также условно проверить пользовательский агент и создать соответствующую ссылку, но я надеялся, что для этого будет более элегантный способ.

Ответы [ 4 ]

13 голосов
/ 17 декабря 2011

Я просто заменяю значения в следующей строке моими стартом и пунктом назначения Lng / Lat

http://maps.google.com/maps?saddr=START_ADD&daddr=DEST_ADD&ll=START_ADD

Затем я запускаю URL-адрес в Android, что позволит пользователю выбрать браузер или приложение с родными картами:

String url = "http://maps.google.com/maps?saddr=START_ADD&daddr=DEST_ADD&ll=START_ADD";

startActivity( new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url)));  

Для iOS, если вы префикс URL-адреса с картами: // вместо http: //, на телефоне будет запущено приложение карты, которое работает очень хорошо. Что-то вроде

NSString *url = @"maps://maps.google.com/maps?saddr=START_ADD&daddr=DEST_ADD&ll=START_ADD";

[[UIApplication sharedApplication] openURL:[NSURL urlWithString:url]];

Именно так я и решил справиться с этим. Это довольно легко на любом устройстве, чтобы получить текущий Lng / Lat, используя их соответствующие структуры местоположения. Результаты всегда кажутся мне достаточно точными, вы можете указать, насколько точны результаты. Чем точнее, тем больше расходуется заряд батареи, а иногда требуется больше времени для получения, но обычно это то, что вы настраиваете в конце, чтобы получить наилучшие результаты для вашей реализации.

6 голосов
/ 20 декабря 2011

Взгляните на гео-адрес обработчика URL, чтобы сказать браузеру использовать нативное приложение

<a href="geo:50.066274, 10.754427;">Location here!</a>

не забывайте об альтернативном варианте для настольных браузеров

5 голосов
/ 21 декабря 2011

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

Это IS самое элегантное решение. Две платформы слишком сильно различаются, чтобы сделать это с помощью одной и той же ссылки для обеих платформ. Добавьте Blackberry или Windows Phone в уравнение, и у вас будет еще больше трудностей в достижении того же поведения без проверки пользовательского агента

1 голос
/ 15 июля 2011

В Iphone вы можете получить текущее местоположение, используя CLLocationManagerDelegate в следующем методе.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{

    CLLocationCoordinate2D location = newLocation.coordinate;
    Float x = location.latitude, y = location.longitude;
}
...