移动相机时移动以相机为中心的 google-maps 标记
Move camera-centered google-maps marker as you move the camera around
目标是捕获 lat/long 用户在地图中导航的位置。在它的正中央有一个标记。
这是我目前得到的结果:
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));
}
});
它有效,但正如您可能已经猜到的那样,它会创建数千个标记。我认为标记应该在移动侦听器外部创建,并在每次相机移动时动画到中心。
那么,我该如何实现呢?
只需保留一个始终指向当前中心的标记参考即可。然后,在放置新的时,如有必要,请移除旧的:
//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));
}
});
您可以创建一个通用标记变量,然后使用 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。
目标是捕获 lat/long 用户在地图中导航的位置。在它的正中央有一个标记。
这是我目前得到的结果:
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));
}
});
它有效,但正如您可能已经猜到的那样,它会创建数千个标记。我认为标记应该在移动侦听器外部创建,并在每次相机移动时动画到中心。
那么,我该如何实现呢?
只需保留一个始终指向当前中心的标记参考即可。然后,在放置新的时,如有必要,请移除旧的:
//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));
}
});
您可以创建一个通用标记变量,然后使用 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。