使用CameraUpdateFactory.newCameraPosition的Android- animateCamera不会缩放 [英] Android- animateCamera with CameraUpdateFactory.newCameraPosition does NOT zoom

查看:1143
本文介绍了使用CameraUpdateFactory.newCameraPosition的Android- animateCamera不会缩放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个onClusterItemClickListener。我想要谷歌地图(v2)动画到该位置,所以我使用CameraUpdateFactory.newCameraPosition。

I have an onClusterItemClickListener. I want the google map (v2) to animate to that position so I use CameraUpdateFactory.newCameraPosition.

问题: Google将动画映射到目标LatLng但不缩放,倾斜等
我使用GoogleMap.CancelableCallback()排除了故障,似乎总是调用onCancel()位置的动画。

Problem: google maps animates to the target LatLng but does not zoom, tilt, etc. I troubleshooted with GoogleMap.CancelableCallback() and it seems that after the animation to the position onCancel() is always called.

这是我的代码

...<some code before>
@Override
public boolean onClusterItemClick(OffersMarker item) {
   final LatLng markerLocation = item.getPosition();
   final OffersMarker i = item;
   final CameraPosition MARKER_POS = new CameraPosition.Builder()
      .target(markerLocation)
      .zoom(22)
      .bearing(0)
      .tilt(25)
      .build();

   gmap.animateCamera(CameraUpdateFactory.newCameraPosition(MARKER_POS));
}

这段代码只会动画成没有缩放或倾斜的目标。

This code only animates to target with no zoom or tilt.

以下是排除故障的第二版

Here is the version two with troubleshooting

  @Override
public boolean onClusterItemClick(OffersMarker item) {
   final LatLng markerLocation = item.getPosition();
   final OffersMarker i = item;
   final CameraPosition MARKER_POS = new CameraPosition.Builder()
      .target(markerLocation)
      .zoom(22)
      .bearing(0)
      .tilt(25)
      .build();

   changeCamera(gmap, CameraUpdateFactory.newCameraPosition(MARKER_POS), new GoogleMap.CancelableCallback() {
       @Override
       public void onFinish() {
            Log.d("CAM_MOVE", "Finished animate camera");
       }
       @Override
       public void onCancel() {
             Log.d("CAM_MOVE", "Canceled animate camera");
       }
   });
}

这里是更换相机方法

Here is change camera method

private void changeCamera(GoogleMap map, CameraUpdate cameraUpdate, GoogleMap.CancelableCallback cancelableCallback) {
    map.animateCamera(cameraUpdate, cancelableCallback);
}

onCancel()全称为unknown source。

onCancel() is allways called by unknown source.

我不确定这些是否连接(onCancel()被调用并且缩放不起作用),但它可能是。
非常感谢任何帮助。

I am not sure if those are connected (onCancel() being called and zoom not working) but It might as well be. Any help much appreciated.

推荐答案

所以解决方案隐藏在返回false的点击监听器中,因此默认方法

So the solution was hiding in the click listener returning false and thus the default method went into action.

解决方案:在onClick代码后返回true。

Solutions: return true after the onClick code.

示例

 private void addClusterItemClickListener(GoogleMap map, ClusterManager cM){
    final GoogleMap gmapI = map;
    cM.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<OffersMarker>() {
        @Override
        public boolean onClusterItemClick(OffersMarker item) {
            Log.d("CAM_MOVE", "Clicked on marker");
            final LatLng markerLocation = item.getPosition();
            final OffersMarker i = item;
            if (markerLocation != null) {
                //Log.d("GEO_CODE_CRASH", "Latitude: " + markerLocation.latitude + " | " + "Longitude: " + markerLocation.longitude);
                //Log.d("CAM_MOVE", "Moving on with placeSelectHandler");
                placeSelectedHandler(markerLocation.latitude, markerLocation.longitude);
                buildingFragment.setNrOfOffersOnToolber(i.getNrOfOffers());
                getServerResponseAndPopulateBuildingPage(adr,markerLocation);

                CameraUpdate update = CameraUpdateFactory.newLatLngZoom(markerLocation, ZOOM_LEVEL_BUILDING);
                gmap.animateCamera(update);

            }
            return true; //<------- THIS NEEDS TO BE TRUE
        }
    });
}

这篇关于使用CameraUpdateFactory.newCameraPosition的Android- animateCamera不会缩放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆