MapBox Android 如何隐藏地图框标签

MapBox Android how to hide mapbox label

如何隐藏左下角的地图框信息标签?

标记的答案是错误的,incanus 指的是较旧的、现已弃用的 SDK。需要注明出处,因为:

  • Mapbox 的地图设计受版权保护
  • OpenStreetMap 数据源的 ODbL 许可证需要署名
  • 我们的卫星、街道和地形地图中使用的其他数据源也需要注明出处

如果您的地图不使用任何这些数据源,也不使用 Mapbox 的设计,如街道、灯光或户外,那么您不需要提供属性。

在 Android 中,如果您需要在地图视图中使用正确的属性,您可以将属性移动到另一个位置 XML。如果您的地图不符合上面列出的任何情况,可以在 XML 中删除属性,如下所示:

mapbox:attribution_enabled="false"

关于隐藏 Mapbox 徽标,所有非企业帐户在使用任何 Mapbox 地图时都必须显示 Mapbox 徽标。因此,您无法删除它。

来源:https://www.mapbox.com/help/attribution/https://www.mapbox.com/help/mapbox-logo/

把署名和logo去掉就行了,如下:

mapboxMap.getUiSettings().setAttributionEnabled(false);
mapboxMap.getUiSettings().setLogoEnabled(false);

要隐藏 Mapbox 属性和徽标,我们可以通过反射访问相应的视图,然后使用以下方法更改其可见性:

private void hideAttributionsView(){
    UiSettings uiSettings = mMapBoxMap.getUiSettings();
    try {
        Field attributionsViewField = UiSettings.class.getDeclaredField("attributionsView");
        attributionsViewField.setAccessible(true);
        Field logoViewField = UiSettings.class.getDeclaredField("logoView");
        logoViewField.setAccessible(true);

        View attributionsView = (View) attributionsViewField.get(uiSettings);
        View logoView = (View) logoViewField.get(uiSettings);

        attributionsView.setVisibility(View.GONE);
        logoView.setVisibility(View.GONE);
    } catch (Exception e) {
        // Nothing
    }
}

请试试这个:

 mapView.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(MapboxMap mapboxMap) {
            mapboxMap.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder()
                            .target(new LatLng(36,50))
                            .zoom(10)
                            .tilt(45.0)
                            .build()),
                    10000);

            mapboxMap.getUiSettings().setAttributionEnabled(false);
            mapboxMap.getUiSettings().setLogoEnabled(false);

        }
    });

自 Mapbox 10.0 起,已批准的答案不再有效。

在最新的 mapbox 中,您可以像这样更改徽标和属性可见性,来自代码:

mapView.logo.updateSettings {
    enabled = false
}

mapView.attribution.updateSettings {
    enabled = false
}

来自XML:

app:mapbox_logoEnabled="false"
app:mapbox_attributionEnabled="false"