Raczej myślałem, że nie będzie to takie trudne do znalezienia, ale pozornie nie jest łatwo znaleźć niesamowity artykuł na temat różnych urządzeń, tak jak można się spodziewać.
Chcę utworzyć link, który otwiera przeglądarkę urządzenia mobilnego i przegląda mapy google LUB otwiera aplikację map (Apple Maps lub Google Maps) i bezpośrednio rozpoczyna trasę, tj .: zacznij w aktualnej lokalizacji, zakończ w danym punkcie ( lat / long).
Mogę testować na dwóch urządzeniach (poza stosem przeglądarki), Androidem i iPhonie.
Poniższy link działa tylko na Androidzie:
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Kliknięcie tego linku w przeglądarce Chrome iPhone'a powoduje dziwne otwarcie Map Google w wersji na komputery z reklamami w aplikacji mobilnej ...
Ten działa tylko na iOS, otwierając Apple Maps z prośbą o podanie lokalizacji początkowej (mogę wybrać „Aktualna lokalizacja”) i rozpocząć trasę = pożądane zachowanie. Kliknięcie tego linku całkowicie kończy się niepowodzeniem w systemie Android:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Zwróć uwagę na protokół maps: //.
Czy istnieje elegancki sposób tworzenia takiego łącza na różnych urządzeniach? Jedno łącze, które działa na wszystkich głównych telefonach komórkowych?
Dzięki
AKTUALIZACJA: znaleziono rozwiązanie (trochę)
Oto, co wymyśliłem. Nie do końca to sobie wyobrażałem, chociaż działa.
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://
protokół jest schemat URL jabłka odwzorowuje aplikację, która będzie tylko rozpocząć pracę na iOS 6 lub wyższym. Istnieją sposoby, aby sprawdzić, czy gmaps jest zainstalowana, a następnie wybrać, co zrobić z adresem URL, ale to było trochę za dużo w stosunku do tego, co zamierzałem. Skończyło się więc na utworzeniu linku maps: // OR maps.google.com/, używając powyższych parametrów.
** AKTUALIZACJA **
niestety, $ .browser.device nie działa od wersji 1.9 jquery (źródło - http://api.jquery.com/jquery.browser )