J'ai plutôt pensé que ce ne serait pas difficile à trouver, mais appearantly il n'est pas facile de trouver un super croix dispositif de l'article, comme vous le souhaitez.
Je veux créer un lien qui ouvre l'appareil mobile du navigateur et surfer sur google maps OU ouvrir une application maps (Apple Maps ou Google Maps) et directement de départ d'un itinéraire, c'est à dire: commencez à la position actuelle à la fin, à un moment donné (lat/long).
Je peux tester sur les deux appareils (à côté de browserstack), 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 iPhone Chrome, cette bizarrement ouvre Google Maps en version de bureau avec les annonces sur l'application mobile...
Celle-ci ne fonctionne sur iOS, l'ouverture d'Apple Maps me demandant d'entrer un emplacement de départ (je peux le prendre "position Actuelle") et de commencer la route = comportement souhaité. En cliquant sur ce lien échoue complètement sur Android:
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
Avis de la maps:// protocole.
Est-il un élégant croix appareil de la création d'un tel lien? 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, mais ça 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)
l' maps://
protocole est le schéma d'url pour apple maps, qui va seulement commencer à travailler sur ios 6 ou supérieur. Il existe des moyens pour tester si gmaps est installé et puis de choisir quoi faire avec l'url, mais qui était un peu trop pour ce que je désirais. Donc j'ai juste fini la création d'un fonds de cartes:// OU maps.google.com/ lien, en utilisant les paramètres ci-dessus.