Android 移动相机时,以相机为中心移动谷歌地图标记
目标是捕获用户在地图中导航的位置的纬度/经度。在它的正中央有一个记号笔 以下是我目前得到的信息:Android 移动相机时,以相机为中心移动谷歌地图标记,android,google-maps,google-maps-android-api-2,Android,Google Maps,Google Maps Android Api 2,目标是捕获用户在地图中导航的位置的纬度/经度。在它的正中央有一个记号笔 以下是我目前得到的信息: myMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() { @Override public void onCameraMove() { CameraPosition test = myMap.getCameraPosition();
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)
然后在其他地方定义mCenterMarker。只需修改即可
在“mCenterMarker=setPosition(myMap.getCameraPosition().target)”行中
像这样
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));
}
setposition()方法在哪里?
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));
}