Je pensais plutôt que ce ne serait pas si difficile à trouver, mais apparemment, il n'est pas facile de trouver un article génial sur plusieurs appareils, comme vous vous en doutez.
Je souhaite créer un lien qui ouvre soit le navigateur de l'appareil mobile et surfe sur google maps OU ouvre une application Maps (Apple Maps ou Google Maps) et démarre directement un itinéraire, c'est-à-dire: commencer à l'emplacement actuel, finir à un point donné ( lat / long).
Je peux tester sur deux appareils (à côté du navigateur), un Android et un iPhone.
Le lien suivant ne fonctionne que sur Android:
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
En cliquant sur ce lien dans Chrome de l'iPhone, cela ouvre bizarrement Google Maps en version de bureau avec des annonces sur l'application mobile ...
Celui-ci ne fonctionne que sur iOS, ouvrant Apple Maps me demandant d'entrer un emplacement de départ (je peux choisir "Emplacement actuel") et démarrer l'itinéraire = comportement souhaité. Cliquer sur ce lien échoue complètement sur Android:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Remarquez les cartes: // protocole.
Existe-t-il une manière élégante de créer un tel lien entre appareils? Un lien qui fonctionne sur tous les principaux mobiles?
Merci
MISE À JOUR: Solution trouvée (un peu)
Voici ce que j'ai trouvé. Ce n'est pas tout à fait ce que j'imaginais, même si cela fonctionne.
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)
le maps://
protocole est le schéma d'URL de l'application Apple Maps, qui ne commencera à fonctionner que sur ios 6 ou supérieur. Il existe des moyens de tester si gmaps est installé, puis de choisir quoi faire avec l'url, mais c'était un peu trop pour ce que je voulais. Je viens donc de créer un lien maps: // OU maps.google.com/, en utilisant les paramètres ci-dessus.
** MISE À JOUR **
malheureusement, $ .browser.device ne fonctionne pas depuis jquery 1.9 (source - http://api.jquery.com/jquery.browser )