2017-05-02 8 views
0

Googleマップに表示されている場所とともにユーザーの位置情報を示す最初のアプリケーションを作成しました。現在のところ、app/mapは完全に動作しています。ちょっとしたナイトルから離れていて、マップはユーザーの位置にジャンプして戻り、設定値に戻っています。Googleマップ上でユーザーを中心に移動できますが、自由に移動できます

私が後にしているのは、ユーザーの場所を更新してズームするための地図ですが、GPSに接続するときにのみ行います。これを実行してユーザーが地図を移動したりズームインしたりズームアウトしたりしても、その場所は表示されますが、Googleマップアプリと同様に(場所が変更されるたびに)再度センタリングされたり、ズームイン/それを行います。

現在、私はonLocationChangedメソッドで次のコードを持っています。私はこれを移動したり、私が何をしているかを行うためにいくつかのロジックを作成する必要があると確信しています。

public void onLocationChanged(Location location) { 

// Update Location On Map 
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16.0F)); 
} 

これは最新のGoogleAPIClientを使用しています。私はここやネット上で多くのチュートリアルを見てきました。私はそれを理解するようです。私はそれが簡単な修正になると確信しています。

答えて

1

を解決しますユーザーの場所

boolean isFirstLocation=false; 
public void onLocationChanged(Location location) { 

    // Set user marker on the map on every location change with this code 
     LatLng currentLatLng = new LatLng(location.getLatitude(),location.getLongitude()); 
     MarkerOptions markerOptions = new MarkerOptions().position(currentLatLng); 
     mMap.addMarker(markerOptions); 

    // Update Location On Map 
     if(!isFirstLocation) 
    { 
     mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng , 16.0F)); 
    isFirstLocation=true; 
    } 

} 

+0

ありがとうございますこれは完全に動作します。 –

+0

ようこそ@DarrenCashmore – FaisalAhmed

+0

見てください私は私の答えを更新しましたこれを使用してください – FaisalAhmed

0
Marker mCurrLocationMarker; 

@Override 
    public void onLocationChanged(Location location) { 

     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 = mMap.addMarker(markerOptions); 

     //move map camera 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
     mMap.animateCamera(CameraUpdateFactory.zoomTo(11)); 

     //stop location updates 
     if (mGoogleApiClient != null) { 
      LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 
     } 

    } 

自分の位置があなたの現在の位置に、この意志オートフォーカスや変更マーカーを変更した場合.. 希望これはただのブールフラグを使用してマップを持っていたら、後に本当のことを設定し、あなたの問題

+0

が返信いただきありがとうございますすべての場所の変更にカメラをアニメーション化する必要はありませんでズームが、これは私が使用した例でありますで開始する。それを離れてこの仕事はうまく位置を更新し、場所の中心を維持します。それが接続するときにこれを実行してから、再度センタリングせずに地図を自由に動かすことができます。 –

関連する問題