Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 移动相机时,以相机为中心移动谷歌地图标记_Android_Google Maps_Google Maps Android Api 2 - Fatal编程技术网

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));
}