Я скорее подумал, что это будет не так сложно найти, но, похоже, нелегко найти потрясающую статью с перекрестными устройствами, как и следовало ожидать.
Я хочу создать ссылку, которая открывает либо браузер мобильных устройств, либо серфинг на карты Google, либо открывать приложение карт (Карты Apple или Карты Google) и непосредственно начинать маршрут, то есть: начать с текущего местоположения, (lat/long).
Я могу протестировать на двух устройствах (рядом с браузером), Android и iPhone.
Следующая ссылка работает только на Android:
<a href="#" onclick="location.href='http://maps.google.com/maps?daddr=lat,long&ll='; return false;">Take me there!</a>
Нажав эту ссылку в iPhone Chrome, это странно открывает Карты Google в настольной версии с объявлениями в мобильном приложении...
Это работает только на iOS, открывая Apple Maps, предлагая мне ввести начальное местоположение (я могу выбрать "Текущее местоположение" ) и начать маршрут = желаемое поведение. Щелчок по этой ссылке полностью не удался на Android:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Обратите внимание на карты://protocol.
Есть ли элегантный способ перекрестного устройства для создания такой ссылки? Одна ссылка, которая работает на всех основных мобильных телефонах
Спасибо
ОБНОВЛЕНИЕ: найденное решение (kinda)
Вот что я придумал. Это не совсем то, что я себе представлял, хотя он работает.
var ua = navigator.userAgent.toLowerCase(),
plat = navigator.platform,
protocol = '',
a,
href;
$.browser.device = ua.match(/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera/i) ? ua.match(/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera/i)[0] : false;
if ($.browser.device) {
switch($.browser.device) {
case 'iphone':
case 'ipad':
case 'ipod':
function iOSversion() {
if (/iP(hone|od|ad)/.test(navigator.platform)) {
// supports iOS 2.0 and later: <http://bit. ly/TJjs1V>
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
}
}
var ver = iOSversion() || [0];
if (ver[0] >= 6) {
protocol = 'maps://';
}
else {
protocol = 'http://maps.google.com/maps';
}
break;
case 'android':
default:
protocol = 'http://maps.google.com/maps';
break;
}
a.attr('href', protocol + href)
Протокол maps://
- это схема URL для приложения apple maps, которая начнет работать только на ios 6 или выше. Есть способы проверить, установлены ли gmaps, а затем выбрали, что делать с URL-адресом, но это было слишком много для того, что я намеревался. Поэтому я только что создал карту://OR maps.google.com/, используя приведенные выше параметры.
** ОБНОВЛЕНИЕ **
К сожалению, $.browser.device не работает, поскольку jquery 1.9 (источник - http://api.jquery.com/jquery.browser)