Más bien pensé que esto no sería tan difícil de averiguar, pero aparentemente no es fácil encontrar un artículo increíble en varios dispositivos, como era de esperar.
Quiero crear un enlace que abra el navegador del dispositivo móvil y navegar a Google Maps O abrir una aplicación de mapas (Apple Maps o Google Maps) y comenzar directamente una ruta, es decir: comenzar en la ubicación actual, terminar en un punto determinado ( latitud longitud).
Puedo probar en dos dispositivos (además de la pila de navegadores), un Android y un iPhone.
El siguiente enlace solo funciona en Android:
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Al hacer clic en este enlace en el Chrome del iPhone, esto abre extrañamente Google Maps en la versión de escritorio con anuncios en la aplicación móvil ...
Este solo funciona en iOS, abriendo Apple Maps pidiéndome que ingrese una ubicación de inicio (puedo elegir "Ubicación actual") e iniciar la ruta = comportamiento deseado. Hacer clic en este enlace falla completamente en Android:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Observe el protocolo maps: //.
¿Existe una forma elegante de varios dispositivos de crear dicho vínculo? ¿Un enlace que funcione en todos los móviles principales?
Gracias
ACTUALIZACIÓN: Solución encontrada (un poco)
Esto es lo que se me ocurrió. No es exactamente lo que imaginaba, aunque está funcionando.
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)
el maps://
protocolo es el esquema de URL para la aplicación de mapas de Apple, que solo comenzará a funcionar en iOS 6 o superior. Hay formas de probar si gmaps está instalado y luego elegir qué hacer con la URL, pero eso fue demasiado para lo que pretendía. Así que acabé creando un enlace maps: // O maps.google.com/, usando los parámetros anteriores.
** ACTUALIZAR **
lamentablemente, $ .browser.device no funciona desde jquery 1.9 (fuente - http://api.jquery.com/jquery.browser )