You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:45:04