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"
如何隐藏左下角的地图框信息标签?
标记的答案是错误的,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"