2017-04-22 16 views
-2

gmapナビゲーションのような機能をブルードットポインタのようなイオンハイブリッドアプリケーションに追加したいと考えています。以前はジオロケーションAPIを使用しましたが、位置を変更しても場所は変更されません(静的に見えます)。私はGoogleマップのようなライブ位置追跡を追加したい。誰も私に正しい方法を提案することはできますか?ionicアプリケーションでライブ位置追跡を追加する方法

+0

https://www.pubnub.com/blog/2017-02-02-realtime-google-maps-tracking-and-live-geolocation-with-javascript/ – Edison

+0

感謝エジソン、しかし、私は1つの質問がある実際にはGoogleのAPIを使用することによってのみ可能ですか?追加の依存関係を使用したくない場合、それを達成する方法は何ですか? –

+0

Google Maps APIの 'watchPosition()'関数です。マップ内のマーカーを変更するために必要なすべての情報を返します。 – Cristiano

答えて

1

watchPositionを使用し、地図上のマーカーを変更してください。次のようなものがあります。

var myMarker = null; 

// get current position 
navigator.geolocation.getCurrentPosition(showPosition); 

// show current position on map 
function showPosition(position) { 
    myMarker = new google.maps.Marker({ 
     position: new google.maps.LatLng(position.coords.latitude, position.coords.longitude), 
     map: new google.maps.Map(document.getElementById("map")), 
     icon: 'img/icons/myicon.png' 
    }); 
} 

// watch user's position 
navigator.geolocation.watchPosition(watchSuccess, watchError, watchOptions); 

// change marker location everytime position is updated 
function watchSuccess(position) { 
    var latLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
    // set marker position 
    marker.setPosition(latLng); 
} 

$ cordovaGeolocationプラグインを使用することもできます。プラグインのドキュメントを見てください。

getCurrentPosition戻りジオロケーション

watchPosition戻り、現在位置、それが変わるたびの現在位置。したがって、この関数では、setPositionで毎回マップ上のマーカーを変更し、座標を渡すことができます。

+0

良い結果が得られますが、すべての位置が変更された後も古いマーカーが表示され、最新の位置のマーカーは1つしか表示されません。 –

+0

あなたの提案が私の問題を解決するおかげで、cristiano。 "marker.setPosition(latLng);"の代わりにあなたのコードに1つの修正を加えてください。 "" myMarker.setPosition(latLng);を記述する必要があります。 " –

0

mapプロパティにネイティブメソッドsetMyLocationEnabled(true)を適用するだけで済みます。

私の例を参照してください。

LET要素:のHTMLElement =のdocument.getElementById( 'マップ');
this.map = this.googleMaps.create(要素);
this.map.setMyLocationEnabled(true);

この最後の行は、ネイティブの現在の位置マーカーをアクティブにします。

関連する問題