1

を変更:アニメイトマーカーは、私はすでにここで</p> <p>は、私が使用したものである2つの固定地理位置を経験していますどのように私は、現在の場所にマーカーを移動することができます</p> <p>

private void autoAnimateMarker() { 

    mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 

    mMap.getUiSettings().setZoomControlsEnabled(true); 

    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     return; 
    } 

    mMap.setMyLocationEnabled(true); 

    LatLng fromLocation = new LatLng(-33.904438, 151.249852); 
    LatLng toLocation = new LatLng(-33.905823, 151.252422); 
    Marker marker = mMap.addMarker(new MarkerOptions().position(fromLocation)); 
    MarkerAnimation.animateMarkerToICS(marker, toLocation, new LatLngInterpolator.Spherical()); 

    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(fromLocation, 17F)); 
} 

その後それを呼び出すonMapReady(...)

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    autoAnimateMarker(); 

} 

は、私はすでに通過した現在の場所に

を表示するには -

https://stackoverflow.com/a/34582595/3585072現在onLocationChanged(場所の場所)方法は、私は場所の変更に基づいて動的に私のマーカーを移動するには、ここに置くために必要なものを、次のようになります:

@Override 
public void onLocationChanged(Location location) 
{ 
    Toast.makeText(this, "Location Changed " + location.getLatitude() 
      + location.getLongitude(), Toast.LENGTH_LONG).show(); 

    mLastLocation = location; 
    if (mCurrLocationMarker != null) { 
     mCurrLocationMarker.remove(); 
    } 

    //Place current location marker 
    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 
    MarkerOptions markerOptions = new MarkerOptions(); 
    markerOptions.position(latLng); 
    markerOptions.title("Current Position"); 
    markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)); 
    mCurrLocationMarker = mGoogleMap.addMarker(markerOptions); 

    //move map camera 
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,11)); 
} 
+0

あなたは「私が移動する場合にのみ、」あなたはとき意味するかと何を意味し、取得に更新し、アニメーションマーカーを提供final solutionですカーソル移動、または他のジオロケーションをクリックしたとき –

+0

@KingReload「私が移動するときだけ」という意味は、私は車を運転している場所Aから出発し、目的地Bに到達するような、私の現在の位置に基づいて移動する必要があります。私は...今は明らかですか? – Sophie

+0

現在の場所を定期的に聞き、場所が変更されたときにマーカーを移動します。私はあなたがしたいことを正確に理解できませんでした。 –

答えて

2

これは私がcurrent location

LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); 

if(ourGlobalMarker == null) { // First time adding marker to map 
    ourGlobalMarker = mGoogleMap.addMarker(new MarkerOptions().position(latLng) 
      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE))); 
    MarkerAnimation.animateMarkerToICS(ourGlobalMarker, latLng, new LatLngInterpolator.Spherical()); 
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 18)); 
} else { 
    MarkerAnimation.animateMarkerToICS(ourGlobalMarker, latLng, new LatLngInterpolator.Spherical()); 
    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 18)); 
} 

Feel free to use this code and let me know if you need any update on this.

+0

あなたの質問のタイトルを更新しました...これらの変更を承諾してください。だから私は、現在のタイトルが私が推測するように、より多くの意見と回答を得ることを願っています。 –

+0

しかし、私はいくつかの他の答えを待っています – Sophie

+0

私はanimateMarkerToICSが何をしているのか分かりません。ここで各場所の更新で新しいマーカーを追加する理由は何ですか? onLocationChangedで既に初期化されたマーカーインマット準備の位置を変更するとどうなりますか?それは何らかの理由で必要ですか?あなたの軌道に複数のマーカーを作成すると思います。 –

0

2秒ごとに繰り返すバックグラウンドスレッドを1つ置きます。以前のマーカーを削除し、このスレッド内のマーカーを設定します。それは私が考える一つの可能​​な方法です。移動すると経度と緯度も変わり、マーカーは2秒ごとに移動します。

0

場所が変更されたときにマーカーを削除して再度マップに追加する必要はありません。マーカーの位置は以下のように設定できます。まず

、以下を参照してください https://gist.github.com/broady/6314689

を位置更新間隔は〜3秒を超える場合:

public void onLocationChanged(Location location) { 
    LatLng toLocation = new LatLng(location.getLatitude(), location.getLongitude()); 
    if (fromLocation != null) { 
     mAnchorMarker.setPosition(fromLocation); 
     MarkerAnimation.animateMarkerToICS(mAnchorMarker, toLocation, new LatLngInterpolator.Spherical()); 
    } 
    fromLocation = toLocation; 
} 

位置更新間隔が短すぎる場合(アニメーション化しないで、単に移動マーカー:

public void onLocationChanged(Location location) { 
    LatLng toLocation = new LatLng(location.getLatitude(), location.getLongitude()); 
    mAnchorMarker.setPosition(toLocation); 
} 

ヨuはonLocationChangedの代わりにonMapReadyにマーカーを初期化する必要があります。

関連する問題

 関連する問題