Android Mapbox SDK v10 如何调整MapView的logo及attribution位置
Mapbox SDK v10 调整 Logo 与 Attribution 位置方法
Mapbox SDK v10 不再通过旧版的 UiSettings 统一管理 logo 和版权标识(attribution)的配置,两个组件的位置调整逻辑独立,可通过XML静态配置或代码动态修改实现:
1. XML 静态配置
直接在布局文件的 MapView 标签中添加对应属性即可,示例如下:
<!-- 调整 attribution 边距 --> app:mapbox_attributionMarginBottom="8dp" app:mapbox_attributionMarginLeft="32dp" <!-- 调整 logo 边距 --> app:mapbox_logoMarginBottom="8dp" app:mapbox_logoMarginLeft="32dp"
如需调整其他方向边距,替换属性后缀的Bottom/Left为Top/Right即可。
2. 代码动态修改
在拿到MapboxMap实例后调用对应组件的配置方法即可,注意代码中传入的边距单位为像素,需要先将dp转为像素避免适配问题:
Kotlin 示例
// 转换dp为像素的工具方法,可根据自身项目实现调整 fun Int.dpToPx(context: Context): Int { return TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, this.toFloat(), context.resources.displayMetrics ).toInt() } // 调整边距 mapboxMap.attribution.apply { marginBottom = 8.dpToPx(context) marginLeft = 32.dpToPx(context) } mapboxMap.logo.apply { marginBottom = 8.dpToPx(context) marginLeft = 32.dpToPx(context) }
Java 示例
// dp转像素工具方法 public int dpToPx(Context context, int dpValue) { return TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, dpValue, context.getResources().getDisplayMetrics() ).intValue(); } // 调整边距 mapboxMap.getAttribution().setMarginBottom(dpToPx(this, 8)); mapboxMap.getAttribution().setMarginLeft(dpToPx(this, 32)); mapboxMap.getLogo().setMarginBottom(dpToPx(this, 8)); mapboxMap.getLogo().setMarginLeft(dpToPx(this, 32));
注意事项
- 如无特殊合规授权,不要随意隐藏logo和attribution组件,否则可能违反Mapbox服务条款。
- 两个组件的可见性也可通过
setEnabled(false)方法控制。
内容的提问来源于stack exchange,提问作者Francis
相关产品推荐
相关产品推荐

