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

Откройте приложение Google Maps из браузера со стартовым местоположением по умолчанию на Android и iphone

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

Моя проблема в том, что я хочу, чтобы исходное местоположение было текущим местоположением, и я хочу, чтобы он работал как с браузерами Android, так и с iPhone. По моему опыту, если я оставлю Saddr пустым, в android это значение по умолчанию относится к текущему местоположению, но на iphone оно просто оставляет исходное местоположение пустым. Если я установил saddr в "текущее местоположение", это устанавливает начальное местоположение для текущего местоположения на iphone, но на android он не распознает местоположение.

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

4b9b3361

Ответ 1

Я просто заменяю значения в следующей строке моим стартом и назначением 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, используя их соответствующие рамки местоположения. Результаты всегда кажутся мне очень точными, вы можете указать, насколько точны ваши результаты. Чем точнее, тем больше утечка на батарею, и иногда требуется больше времени для приобретения, но обычно это то, что вы настраиваете в конце, чтобы получить наилучшие результаты для вашей реализации.

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

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

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