私はむしろこれを見つけるのはそれほど難しいことではないと思いましたが、あなたが期待するように、素晴らしいクロスデバイスの記事を見つけるのは簡単ではないようです。
モバイルデバイスのブラウザを開いてGoogleマップに移動するか、マップアプリ(AppleMapsまたはGoogleMaps)を開いてルートを直接開始するリンクを作成したい。つまり、現在の場所から開始し、特定のポイントで終了する(緯度/経度)。
AndroidとiPhoneの2つのデバイス(browserstack以外)でテストできます。
次のリンクはAndroidでのみ機能します。
<a href="http://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
iPhoneのChromeでこのリンクをクリックすると、モバイルアプリに広告が表示されたデスクトップバージョンのGoogleマップが奇妙に開きます...
これはiOSでのみ機能し、Apple Mapsを開いて、開始場所を入力するように求められ(「現在の場所」を選択できます)、ルートを開始します=目的の動作。このリンクをクリックすると、Androidでは完全に失敗します。
<a href="maps://maps.google.com/maps?daddr=lat,long&ll=">Take me there!</a>
maps://プロトコルに注意してください。
そのようなリンクを作成するエレガントなクロスデバイスの方法はありますか?すべての主要な携帯電話で機能する1つのリンク?
ありがとう
更新:解決策が見つかりました(ちょっと)
これが私が思いついたものです。それは機能していますが、私が想像したものとはまったく異なります。
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://
プロトコルは、リンゴのURLスキームのみ、IOS 6以上で作業を開始しますアプリを、マッピングしています。gmapsがインストールされているかどうかをテストしてから、URLをどう処理するかを選択する方法はいくつかありますが、それは私が意図したものには多すぎました。したがって、上記のパラメータを使用して、maps:// ORmaps.google.com/リンクを作成することになりました。
**更新**
悲しいことに、$ .browser.device jqueryの1.9以降は動作しません(ソース- http://api.jquery.com/jquery.browser)