我想做一个像 Sample image
其中想要在底部工作表片段中显示谷歌地图。
我尝试了什么
我试图在底部对话框片段中显示地图,但输出并不是我想要的。
我需要的是固定大小的视图,它应该能够显示地图。目前我的视图也响应用户手势来改变底部页面状态但我需要手势才能在地图上工作(例如用于地图平移)。
答案 0 :(得分:4)
当我们在BottomSheet
上使用地图时,它与触摸事件冲突。因此,需要禁止触摸BottomSheet
。
请找到一个允许地图移动的下面的自定义类。
public class BottomSheetMapView extends MapView {
public BottomSheetMapView(Context context) {
super(context);
}
public BottomSheetMapView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public BottomSheetMapView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public BottomSheetMapView(Context context, MapboxMapOptions options) {
super(context, options);
}
@Override
public boolean onInterceptTouchEvent(final MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
getParent().requestDisallowInterceptTouchEvent(false);
break;
default:
break;
}
return super.onInterceptTouchEvent(event);
}
}
我正在使用Mapbox。因此,我在xml中使用com.example.BottomSheetMapView
而不是com.mapbox.mapboxsdk.maps.MapView
。同样,您可以使用Google地图。
这符合您的要求。
答案 1 :(得分:0)
我需要实现相同的功能。就我而言,我使用了一个包含BottomSheetDialogFragment
的{{1}}。用户在地图上进行某些手势时,您需要禁用SupportMapFragment
的触摸监听器。您可以在这篇文章中参考我的示例代码:https://stackoverflow.com/a/53740355/1767167