5

我使用 latlngbound 在地图 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;
    }

我使用标记单击侦听器来检测标记上的单击。该方法中的吐司有效。但是相机就是放大不了,你知道为什么吗?谢谢你!

4

4 回答 4

7

尝试:

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

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

我正在实现类似的东西并遇到了同样的问题,并注意到 api 在定时请求方面存在一些问题。这对我有用。

于 2014-05-06T15:34:21.850 回答
4

实现onMarkerClickListener时,如果您想自己为相机设置动画,则需要onMarkerClickreturn true。如果onMarkerClick返回true,它将不执行默认操作,即显示信息窗口并在屏幕中央平移标记。

您的代码将是:

@Override
public boolean onMarkerClick(Marker mMarker) {
        //Custom onMarkerClick actions here
    return true;
}
于 2018-09-15T05:56:30.417 回答
0
map.moveCamera(CameraUpdateFactory.newLatLngZoom(mMarker.getPosition(), 15)));

用这个。它会起作用的。

于 2013-11-13T06:37:43.277 回答
0

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

myMap.setOnMarkerClickListener(this);

之后,您可以简单地使用:

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

对我来说工作得很好。

于 2018-02-14T10:35:36.763 回答