Я швидше думав, що це буде не так важко з'ясувати, але, очевидно, непросто знайти приголомшливу статтю про різні пристрої, як ви очікували.
Я хочу створити посилання, яке відкриває або браузер мобільного пристрою, і переглядає Google Maps АБО відкриває додаток карт (Apple Maps або Google Maps) і безпосередньо починаючи маршрут, тобто: почати з поточного місця, закінчити в певній точці ( лат / довга).
Я можу тестувати на двох пристроях (поряд із браузером), на Android та iPhone.
Наступне посилання працює лише на Android:
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Клацнувши це посилання в Chrome iPhone, це дивно відкриває Карти Google у настільній версії з рекламою в мобільному додатку ...
Цей працює лише на iOS, відкриваючи Карти Apple, просячи мене ввести початкове місце (я можу вибрати "Поточне місце") і почати маршрут = бажана поведінка. Натискання цього посилання повністю не вдається на Android:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Зверніть увагу на maps: // protocol.
Чи існує елегантний спосіб створення такого посилання на різних пристроях? Одне посилання, яке працює на всіх основних мобільних телефонах?
Дякую
ОНОВЛЕННЯ: Рішення знайдено (певне)
Ось що я придумав. Це не зовсім те, що я собі уявляв, хоча працює.
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 для яблука відображає додаток, яке буде тільки почати працювати на IOS 6 або вище. Є способи перевірити, чи встановлено gmaps, а потім вибрати, що робити з URL-адресою, але це було занадто багато для того, що я задумав. Тож я щойно закінчив створення мапи: // АБО maps.google.com/ посилання, використовуючи наведені вище параметри.
** ОНОВЛЕННЯ **
на жаль, $ .browser.device не працює з jquery 1.9 (джерело - http://api.jquery.com/jquery.browser )