2017-07-17 44 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

相关问题