Bunu öğrenmenin o kadar zor olmayacağını düşündüm ama görünüşe göre, beklediğiniz gibi harika bir çapraz cihaz makalesi bulmak kolay değil.
Ya mobil cihazın tarayıcısını açan ve google haritalarında gezinen YA DA bir harita uygulaması (Apple Maps veya Google Maps) açıp doğrudan bir rota başlatan bir bağlantı oluşturmak istiyorum, yani: geçerli konumda başlamak, belirli bir noktada bitmek ( enlem / boylam).
Bir Android ve bir iPhone olmak üzere iki cihazda (tarayıcı yığınının yanında) test edebilirim.
Aşağıdaki bağlantı yalnızca Android'de çalışır:
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Bu bağlantı iPhone'un Chrome'unda tıklandığında, bu garip bir şekilde Google Haritalar'ı mobil uygulamadaki reklamlarla masaüstü sürümünde açar ...
Bu yalnızca iOS'ta çalışıyor, Apple Haritalar'ı açarak benden bir başlangıç konumu girmemi istiyor ("Mevcut Konum" u seçebilirim) ve rotayı başlat = istenen davranış. Bu bağlantıya tıklamak Android'de tamamen başarısız oluyor:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Maps: // protokolüne dikkat edin.
Böyle bir bağlantı oluşturmanın zarif bir çapraz cihaz yolu var mı? Tüm ana cep telefonlarında çalışan bir bağlantı mı?
Teşekkürler
GÜNCELLEME: Çözüm bulundu (tür)
İşte bulduğum şey. İşe yarasa da, hayal ettiğim gibi değil.
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://
protokol elma url şeması sadece ios 6 veya daha üzerinde çalışmaya başlayacak uygulamayı haritalar olduğunu. Boşlukların kurulu olup olmadığını test etmenin ve ardından url ile ne yapılacağını seçmenin yolları var, ama bu benim niyet ettiğim şey için çok fazlaydı. Bu yüzden, yukarıdaki parametreleri kullanarak bir maps: // VEYA maps.google.com/ bağlantısı oluşturdum.
** GÜNCELLEME **
maalesef $ .browser.device jquery 1.9'dan beri çalışmıyor (kaynak - http://api.jquery.com/jquery.browser )