使用sharewire/google-maps-clustering库实现onClusterClick后地图缩放的问题
别担心,这个问题很好解决!虽然这个库的Cluster类没有提供直接的getPosition()方法,但它给出的getLatitude()和getLongitude()已经足够我们实现地图缩放功能了——我们只需要用这两个值手动创建一个LatLng对象就行。
具体实现代码
你可以把原来的代码改成这样:
@Override public boolean onClusterClick(final Cluster<MyItem> cluster) { // 用cluster的经纬度创建LatLng对象 LatLng clusterPosition = new LatLng(cluster.getLatitude(), cluster.getLongitude()); // 和官方库一样的方式执行缩放动画 map.animateCamera( CameraUpdateFactory.newLatLngZoom( clusterPosition, (float) Math.floor(map.getCameraPosition().zoom + 1) ), 300, null ); return true; // 表示事件已被处理,不再传递给其他监听器 }
原理说明
这个思路和你用官方库的逻辑完全一致,只是多了一步从Cluster的经纬度构建LatLng对象的操作。因为newLatLngZoom()方法需要的就是一个LatLng类型的参数,所以只要我们把Cluster的位置信息转换成这个类型,就能顺利调用地图的缩放动画了。
内容的提问来源于stack exchange,提问作者Max Yablonskyi
相关产品推荐
相关产品推荐

