Saya agak berpikir ini tidak akan terlalu sulit untuk ditemukan tetapi tampaknya tidak mudah untuk menemukan artikel lintas perangkat yang luar biasa, seperti yang Anda harapkan.
Saya ingin membuat tautan yang membuka browser perangkat seluler dan menjelajahi google maps ATAU membuka aplikasi peta (Apple Maps atau Google Maps) dan langsung memulai rute, yaitu: mulai di lokasi saat ini, berakhir di titik tertentu ( lintang / bujur).
Saya dapat menguji pada dua perangkat (di samping browserstack), Android dan iPhone.
Tautan berikut hanya berfungsi di Android:
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Mengklik tautan ini di Chrome iPhone, ini secara aneh membuka Google Maps dalam versi desktop dengan iklan di aplikasi seluler ...
Yang ini hanya berfungsi di iOS, membuka Apple Maps meminta saya untuk memasukkan lokasi awal (saya dapat memilih "Lokasi Saat Ini") dan memulai rute = perilaku yang diinginkan. Mengklik tautan ini sepenuhnya gagal di Android:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Perhatikan peta: // protocol.
Apakah ada cara lintas perangkat yang elegan untuk membuat tautan seperti itu? Satu tautan yang berfungsi di semua ponsel utama?
Terima kasih
UPDATE: Solusi ditemukan (agak)
Inilah yang saya dapatkan. Ini tidak seperti yang saya bayangkan, meskipun berhasil.
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)
yang maps://
protokol adalah skema url untuk apel peta app, yang hanya akan mulai bekerja pada ios 6 atau lebih tinggi. Ada beberapa cara untuk menguji apakah gmaps diinstal dan kemudian memilih apa yang harus dilakukan dengan url, tetapi itu terlalu berlebihan untuk apa yang saya inginkan. Jadi saya akhirnya membuat peta: // ATAU tautan maps.google.com/, menggunakan parameter di atas.
** PEMBARUAN **
Sayangnya, $ .browser.device tidak berfungsi sejak jquery 1.9 (sumber - http://api.jquery.com/jquery.browser )