2017-07-17 40 views
1

目標是捕獲用戶在地圖中導航的緯度/經度。它的中心有一個標記。當您移動相機時,移動以相機爲中心的Google地圖標記

這是我走到這一步:

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

只需保留一個標記引用,該標記始終指向當前中心。然後,將一個新的時,除去必要時老一:

//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

相關問題