代码之家  ›  专栏  ›  技术社区  ›  Rosenberg

移动相机时,以相机为中心移动谷歌地图标记

  •  2
  • Rosenberg  · 技术社区  · 7 年前

    目标是捕获用户在地图中导航的位置的纬度/经度。它的中心有一个标记。

    以下是我目前得到的信息:

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

    2 回复  |  直到 7 年前
        1
  •  2
  •   Daniel Nugent    7 年前

    只需保留一个始终指向当前中心的标记引用。然后,在放置新零件时,如有必要,请移除旧零件:

    //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));
        }
    });
    
        2
  •  -1
  •   Maxwell Omdal    7 年前

    您可以创建一个通用标记变量,只需使用 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));
    }