2016-05-21 9 views
0

私は新しいコードコーディンググーグルマップで、 私の質問は、ユーザーのジェスチャードラッグを制御してズームイン/ズームアウトする方法です。 私のコードはいつも私がズームイン/アウト時にユーザーの現在の位置に戻るので、ドラッグ/スクロールアップ、ダウン、左、右にならない。常に現在の位置に戻る。私の地図上でユーザーのジェスチャーを制御します

現在のLOCのユーザー

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() { 
     @Override 
     public void onMyLocationChange(Location location) { 
      LatLng loc = new LatLng(location.getLatitude(), location.getLongitude()); 
      mMarker = mMap.addMarker(new MarkerOptions().position(loc)); 
      mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16)); 
     } 
    }; 
+0

は単に 'mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LOC、16))を削除;' – antonio

+0

私はそのコードを削除した場合、私のアプリは、ユーザーに直接現在のpossitionに行く傾けます。私は、アプリが開いてカメラが現在の位置に移動しても、ドラッグしてscroolのように地図カメラを動かすことができます。zoomin/outをユーザの現在の位置に戻してください。 –

+0

だから、現在の地図を中心にしたい初めての場所? – antonio

答えて

0

のためにその私のコードあなたは初回のみにカメラを移動するためにbooleanを使用することができます。

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMyLocationChangeListener { 
    private GoogleMap mMap; 
    private Marker mMarker; 
    private boolean firstTime = true; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 

     ((SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map)).getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     mMap.setMyLocationEnabled(true); 
     mMap.setOnMyLocationChangeListener(this); 
    } 

    @Override 
    public void onMyLocationChange(Location location) { 
     LatLng loc = new LatLng(location.getLatitude(), location.getLongitude()); 
     mMarker = mMap.addMarker(new MarkerOptions().position(loc)); 

     if (firstTime) { 
      mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16)); 
      firstTime = false; 
     } 
    } 
} 

注:この例では、使用していることを考慮してくださいGoogleMap.OnMyLocationChangeListenerのみそれはあなたの質問で使用している方法ですが、廃止されており、the documentationに従ったFusedLocationProviderApiを使用する必要があります:

公共最終ボイドsetOnMyLocationChangeListener (GoogleMap.OnMyLocationChangeListenerリスナー)

このメソッドは廃止されました。代わりに com.google.android.gms.location.FusedLocationProviderApiを使用してください。 FusedLocationProviderApiは改善された位置検索と電源 を使用し、「マイロケーション」の青い点で使用されます。サンプルアプリケーションフォルダの MyLocationDemoActivity(例: サンプルコード)または「Location Developer Guide」を参照してください。

+0

OK後で試してみてください。@antonioの前に感謝しています。 –

+0

hai @antonio、私はあなたのコードを試していますが、まだmycurrentの場所に戻っています –

+0

あなたのコードの最も関連する部分を投稿できますか? – antonio

関連する問題