安卓地图V2标记点击不缩放

5

我使用LatLngBounds在地图v2上显示多个标记。当我单击其中一个标记时,希望摄像机放大。

        private void loadCenter(){

        Builder boundsBuilder  = new LatLngBounds.Builder();
        for (int i=0;i<mmarker.saveMarker.size();i++)
        {
            boundsBuilder.include(mmarker.saveMarker.get(i));
        }
        LatLngBounds bounds = boundsBuilder.build();

          map.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 60));
}

    @Override
    public boolean onMarkerClick(Marker mMarker) {
        // TODO Auto-generated method stub
        Toast.makeText(this, "MARKER CLICKED", Toast.LENGTH_LONG).show();
                CameraUpdate zoom=CameraUpdateFactory.newLatLngZoom(mMarker.getPosition(), 15);

                map.animateCamera(zoom);
        return false;
    }

我使用on marker click listener来检测标记的点击。该方法中的toast消息可以正常工作。但是相机却无法放大,你知道原因吗?非常感谢!


如果从onMarkerClick返回true会怎样? - fasteque
仍然是相同的结果。因为Toast确实起作用。 - Tony Tong
你确定15是正确的值吗?我的意思是,当没有缩放时,你使用的是哪个值? - fasteque
4个回答

7

尝试:

            new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                getMap().animateCamera(CameraUpdateFactory.newLatLngZoom(mk.getPosition(), level));
            }
        }, 300);

我正在实现类似的功能,并遇到了相同的问题,注意到API在计时请求方面存在一些问题。这对我有用。


这就是解决方案。看起来在点击地图标记时需要延迟,以便地图移动和缩放能够正常工作。请注意,此帖子正确,您无需强制获取 Looper.getMainLooper() ,因为它可以正常运行。 - PGMacDesign
延迟从来不是一个好的解决方案...我在下面发布了正确的答案。 - Seïfane Idouchach

4

当实现onMarkerClickListener时,如果您想自己动画相机,则需要使onMarkerClick返回true。 如果onMarkerClick返回true,则不会执行默认操作,即显示信息窗口并将标记平移到屏幕中心。

您的代码将是:

@Override
public boolean onMarkerClick(Marker mMarker) {
        //Custom onMarkerClick actions here
    return true;
}

0

当地图准备好时,您需要在任何地方注册方法,使用:

myMap.setOnMarkerClickListener(this);

之后你可以简单地使用:

myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(marker.getPosition(), 15));

对我来说完全正常运行。


0
map.moveCamera(CameraUpdateFactory.newLatLngZoom(mMarker.getPosition(), 15)));

请使用这个。它会起作用的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接