web-dev-qa-db-ja.com

Android Phonegap-ネイティブのGoogleマップアプリケーションを開く方法

Phonegapを使用してAndroidアプリケーションで作業していますが、ネイティブのGoogleマップアプリケーションを開いて道順を表示する方法を見つけるのに問題があります。 URLが、アプリケーションを開くと困惑します。これまでのところ、iOSプラットフォームで開発するためのPhonegap関連の提案しか見つかりませんでした。

ホワイトリストのアクセス許可にGoogleマップを追加しました。スクリプトタグに正しいCordova.jsファイルとGoogleマップリンクを含め、AndroidManifest.xmlファイルに正しいアクセス許可を持ち、ビルドパスにCordova.jarとGoogle Map APIを含めました。 、resディレクトリにPhonegap xmlフォルダー、assets/wwwディレクトリにjsファイル、libsディレクトリにjarファイルがあります。

私が達成しようとしていること:

    1.リンクがクリックされたら、ネイティブのGoogleマップアプリケーションを開きます。アプリケーションがデバイスにインストールされていない場合は、Googleマップがインストールされていないためインストールする必要があることをユーザーに通知します。
      a。私はすでにネットワーク接続をチェックしており、それが行われるべきように処理しています。
    2。 Googleマップが開き、ユーザーの現在の場所からクリックされたリンクの場所までの道順が表示されます。

以下の例は、私のAndroidデバイスでiOSとまったく同じように機能しますが、明らかにGoogleマップアプリケーションのアクションを開きません。

<a> href="http://maps.google.com/maps?q=TD Washington DC"><img src="img/ico_pin.png" />White House</a></a>

2番目の例は、現在の場所を挿入する方法を理解できませんでしたが、最後の場所を含めることで最初の例に追加します。最も重要なことは、それでもまだGoogleマップアプリケーションを開かないことです。

<a href="javascript:openMaps('daddr=1600+Pennsylvania+Ave+NW+Washington+DC+20500+USA');"><img src="img/ico_pin.png" />White House</a>

function openMaps(querystring) {
    var maproot = '';
    maproot = 'http://maps.google.com/maps?saddr=Current+Location&';
    window.location = maproot + querystring;
}

以下の3番目の例では、アプリケーション内で地図を表示できます。正しいルートは表示されますが(ポイントAからポイントBへのoverhead瞰図から)、実際のGoogleマップアプリケーションは開きません。

<a id="whDirections" href="#mm_directions" onclick="getDirections()">
                    <img src="img/ico_pin.png" />White House</a>

<div data-role="content">
    <div class="ui-bar-c ui-corner-all ui-shadow" style="padding: 1em;">
        <div id="mapdirections_canvas" style="height: 300px;"></div>
    </div>
</div>

function getDirections() {
    var directionsService = new google.maps.DirectionsService();
    var map;
    var directionsDisplay = new google.maps.DirectionsRenderer();
    var mapOptions = {
        zoom: 9,
        zoomControl: true,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("mapdirections_canvas"), mapOptions);
    directionsDisplay.setMap(map);

    var myLatLng = new google.maps.LatLng(gmmLat, gmmLong);
    if (document.getElementById("whDirections")) {
        var request = {
            Origin: myLatLng,
        destination: new google.maps.LatLng(38.897096, -77.036545), 
            travelMode: google.maps.TravelMode.DRIVING
    };
    directionsService.route(request, function(result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(result); 
        }
    });
}

誰かがこれに関するリンクやアイデアを持っているなら、私は本当に助けに感謝します。 「Hello World」アプリ以外に、これは私の最初のモバイルアプリケーションです。私が何かを見逃しているのか、またはこれを完全に間違っているのかを教えてください。追加情報が必要な場合は、お知らせください。

助けてくれてありがとう。

16
Brian

Geo:タイプuriを使用します。

<a href="geo:38.897096,-77.036545">open map</a>

ユーザーは、デバイスにインストールされているマッピングアプリケーションを開く選択を取得します。

56
Simon MacDonald

私のためのこの仕事...

var addressLongLat = yourLatitude+','+yourLongitude

Android Maps App:

window.open("geo:"+addressLongLat);

IOs Mapsアプリの場合:

window.open("http://maps.Apple.com/?q="+addressLongLat, '_system');

アプリブラウザのGoogleマップの場合:

window.open("http://maps.google.com/?q="+addressLongLat, '_system');
14
Carlos Galeano

Phonegap/cordovaまたはWebブラウザーのすべてのバージョン。 Googleマップのネイティブアプリになります。

現在の場所からqへのナビゲーションの場合-window.open( "google.navigation:q = 23.3728831,85.3372199&mode = d"、 '_system');

検索の場合-window.open( "geo:0,0?q = pizza"、 '_system');

ここを読む- https://developers.google.com/maps/documentation/Android/intents

5
Aditya Raj

Navigator Cordova/Phonegapプラグインの起動 は、次のネイティブナビゲーションアプリを使用して目的地に移動するために使用できます。

  1. Android:Googleナビゲーター
  2. iOS:Apple Maps/Google Maps
  3. Windows Phone:Bing Maps
2
Dhaval Jivani

これは私が使用するものです:

function (lat, lon) {
    var latLon = lat + ',' + lon;

    if (device.platform.toUpperCase() === "Android") {
        window.open("geo:" + latLon, "_system");
    } else if (device.platform.toUpperCase() === "IOS") {
        window.open("http://maps.Apple.com/?sll=" + latLon + "&z=100&t=k", "_system");
    }
}

注:Appleマップ、sll=...およびt=kは、正確な経度と緯度を指定していることを意味し、t=kは、Appleマップが衛星画像を表示することを意味します。また、iOSとAndroidのみを書いているため、他のプラットフォームを使用している場合は、それぞれを明示的に確認してください! 「Androidのgeo:は常に期待どおりに機能しますが、私は間違っている可能性があります。覚えておいてください:実際のデバイスですべてをテストしてください!

0
Will Brickner