Откройте приложение 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 в приложении. Мне было интересно, есть ли способ получить ссылку, чтобы открыть собственное приложение с правильным "текущим местоположением" для начальной точки. Я знаю, что я мог бы также условно проверить агент-агент и создать ссылку соответственно, но я надеялся, что будет более элегантный способ сделать это.
Ответы
Ответ 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;
}