java - Mapbox:如何从 Mapbox 定义的 Fragment 中获取 MapView 的引用?
问题描述
我在这里遵循了 Mapbox 的说明https://docs.mapbox.com/android/maps/examples/support-map-fragment/,我可以成功地从 MapFragment 可视化地图。
//Create the mapFragment
if (savedInstanceState == null) {
// Create fragment
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Build mapboxMap
MapboxMapOptions options = MapboxMapOptions.createFromAttributes(this, null).doubleTapGesturesEnabled(true);
options.camera(new CameraPosition.Builder()
.target(new LatLng(-52.6885, -70.1395))
.zoom(14)
.build());
// Create map fragment
mapFragment = SupportMapFragment.newInstance(options);
// Add map fragment to parent container
transaction.add(R.id.container, mapFragment, "com.mapbox.map");
transaction.commit();
} else {
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentByTag("com.mapbox.map");
// Working with Fragment - getFragment by ID
}
if (mapFragment != null) {
mapFragment.getMapAsync(this);
}
现在我想介绍 LineManager,以便在注释插件的帮助下定义一些行,在这里找到https://docs.mapbox.com/android/plugins/overview/annotation/ 但问题是,我可以不要初始化它,因为这部分:
LineManager lineManager = new LineManager(mapView, mapboxMap, style);
我有 mapboxMap 和样式,但我没有 mapView。
那么我们如何从 Mapbox 定义的 MapFragment 中获取 mapView 呢?
解决方案
我找到了。对于以后想要使用此方法的任何人,您需要致电
mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentByTag("com.mapbox.map");
(MapView) mapFragment.getView(); // Might return null
检查它是否为空也很好,以防止出现 NullPointerExceptions。
推荐阅读
- javascript - 在 JS 之前加载 CSS 会导致不良影响
- excel - 如何在excel vba中居中输入框
- reactjs - Libsodium generateKeys 仅偶尔工作
- mysql - 为什么此查询会引发错误?
- python-3.x - Python datetime:如何将估计时间添加到 datet
- python - 字典列表中的字典集
- sql - 修复和缩小不正确的历史记录
- javascript - 在我输入 jquery 字段后,jquery textfield 使我的功能激活 - 如何在 jquery 中调用函数
- python - 熊猫:根据另一列的内容乘以一列
- python - 让 raspberryPi 接收来自 tcp 客户端和 gpio 引脚的请求