返回true到onMarkerClick会消耗该事件,但我们会丢失infoWindow显示,地图工具栏和相机定位。
然后我知道我是否愿意:
mMap.moveCamera()
mMarker.showInfoWindow();
mMap.getUiSettings().setMapToolbarEnabled(true);
但显然使用第3点中的句子不足以显示地图工具栏。那么我可以在代码中添加什么呢?知道在onMarkerClick中我将返回true,当我返回false时,默认情况下会给出所有三个函数。
public boolean onMarkerClick(Marker marker) {
mMap.animateCamera(
CameraUpdateFactory.newLatLngZoom(ROOTS, 16), //update
2000, //durationMs
new GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
markerRoots.showInfoWindow();
mMap.getUiSettings().setMapToolbarEnabled(true); //NOT SUFFICIENT
}
@Override
public void onCancel() {
}
}
);
return true;
}
如果有什么不明白的地方,请告诉我。
此致
答案 0 :(得分:0)
答案 1 :(得分:0)
我的目的是:
但由于我无法自动完成,因此代码是我,具体取决于缩放和标记上至少两次点击。
然后在动画之前,相机变焦将具有值。所以我使用mMap.getCameraPosition().zoom;
得到它并根据缩放进行评估,如果我能够使用该事件(返回true )或执行默认行为(返回false ),即显示地图的infoWindow和工具栏。
执行和互动流程:
zoom==16.0
,则显示imageViews。第1项。
public boolean onMarkerClick(final Marker marker) {
//Activate the default behavior after the animation and when clicking
float zoom = mMap.getCameraPosition().zoom;
if (zoom == 16.0) {
mMap.getUiSettings().setMapToolbarEnabled(true);
return false;
}
mMap.animateCamera(
CameraUpdateFactory.newLatLngZoom(ROOTS, 16), //update
2000, //durationMs
new GoogleMap.CancelableCallback() {
@Override
public void onFinish() {
//Disable the toolbar after the animation
mMap.getUiSettings().setMapToolbarEnabled(false);
}
@Override
public void onCancel() {
}
}
);
return true;
}
事件的答案取决于缩放,无论是默认应用行为还是自定义行为。
答案 2 :(得分:0)
目前尚无解决方案...当setOnMarkerClickListener返回true工具栏不可见时。 对我来说最好的选择:
mMap.setOnMarkerClickListener(marker -> {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
marker.showInfoWindow();
//mMap.animateCamera to some point like this
Point targetPoint = new Point(marker.x, marker.y - 350);
LatLng targetPosition = projection.fromScreenLocation(targetPoint);
mMap.animateCamera(CameraUpdateFactory.newLatLng(targetPosition), 100, null);
}
}, 100);
// MOST IMPORTANT
return false;
});