Android-Google Maps-平滑拖动标记

时间:2019-04-01 15:08:29

标签: java android google-maps

我正在尝试在地图活动上创建一个“选择位置”(就像在选择路线起点时在Google Maps应用中的位置一样)。

基本上,我将标记放置在地图的中心,然后将其重新放置在摄像机移动的位置。 问题是标记笔无法平稳移动(结巴)。我尝试了一些关于stackoverflow的解决方案,但没有一个起作用。

我的代码是这样的:

    getGoogleMap().moveCamera(CameraUpdateFactory.newLatLngZoom(
            new LatLng(location.getLatitude(),
                    location.getLongitude()), 14));
    LatLng target = getGoogleMap().getCameraPosition().target;

    chooseMarker = getGoogleMap().addMarker(new MarkerOptions()
            .position(target));
    getGoogleMap().setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
        @Override
        public void onCameraMove() {
            // Get the center of the Map.
            LatLng centerOfMap = getGoogleMap().getCameraPosition().target;

            // Update your Marker's position to the center of the Map.
            chooseMarker.setPosition(centerOfMap);


        }
    });

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则希望用户使用跟随摄像机位置的标记来选择位置。另外,您希望标记始终保持在Google地图的中心。在这种情况下,您可以使用一个简单的技巧。在包含Google地图的布局顶部添加一个视图,并使该视图不可见(从项目资产中分配相应的图标)。每当用户想要选择位置时,使其可见(该位置应位于您的Google地图布局的中心)。由于我们可以访问地图中心,因此一旦用户满意该位置并提交下一个动作,我们就可以向前移动地图中心的位置。在该过程结束时,使“标记”不可见。

尽管还有其他解决方案,但这可能非常简单有效。