2017-07-17 16 views
1

目的は、ユーザーが地図内をどこでナビゲートするかの緯度/経度をキャプチャすることです。その中央にマーカーがあります。カメラを動かすときにカメラ中心のgoogle-mapsマーカーを移動する

myMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() { 
     @Override 
     public void onCameraMove() { 
      CameraPosition test = myMap.getCameraPosition(); 
      myMap.addMarker(new MarkerOptions().position(myMap.getCameraPosition().target).anchor(0.5f, .05f).title("Test")); 
      Log.d(TAG, "Map Coordinate: " + String.valueOf(test)); 
     } 
    }); 

それは動作しますが、ご想像のように、マーカーの数千を作成します。

は、ここで私はこれまで得たものです。私は、マーカーが移動リスナーの外に作成され、カメラが動くたびにセンターにアニメーションする必要があると考えています。

どうすれば実現できますか?

答えて

1

常に現在の中心点を指し示すマーカー参照を1つだけ保持してください。必要に応じて、古いものを削除し、新しいものを置くときに、:その後、定義

//Instance variable: 
Marker mCenterMarker; 

myMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() { 
    @Override 
    public void onCameraMove() { 

     //Remove previous center if it exists 
     if (mCenterMarker != null) { 
      mCenterMarker.remove(); 
     } 

     CameraPosition test = myMap.getCameraPosition(); 
     //Assign mCenterMarker reference: 
     mCenterMarker = myMap.addMarker(new MarkerOptions().position(myMap.getCameraPosition().target).anchor(0.5f, .05f).title("Test")); 
     Log.d(TAG, "Map Coordinate: " + String.valueOf(test)); 
    } 
}); 
-1

あなたは普遍的なマーカー変数を作成することができ、そしてちょうどsetPosition(myMap.getCameraPosition().target)

//Instance variable: 
Marker mCenterMarker; 

myMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() { 
@Override 
public void onCameraMove() { 

    //Remove previous center if it exists 

    CameraPosition test = myMap.getCameraPosition(); 
    //Assign mCenterMarker reference: 
    mCenterMarker = setPosition(myMap.getCameraPosition().target) 
    Log.d(TAG, "Map Coordinate: " + String.valueOf(test)); 
} 

を使用してカメラに基づいて、それは場所です変更しますmCenterMarker他の場所

+0

ここで、setposition()メソッドは? – kemdo