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

Android使用MapBox瓦片作为osmdroid TileSource的相关问题咨询

嘿,作为刚入坑OSMDroid的新手,我太懂你找MapBox Map ID的迷茫了!我来一步步帮你捋清楚,搞定用MapBox Streets瓦片的需求~

一、找到/获取MapBox Map ID

其实官方预设的mapbox.mapbox-streets-v8本身就有对应的Map ID,不用自己从零创建,步骤如下:

  • 登录你的MapBox账号后,进入MapBox Studio(官网里的地图编辑器入口)
  • 在左侧导航栏选「Styles」,然后在预设样式里找到「Mapbox Streets v8」(或者直接搜索)
  • 点击进入这个样式的详情页,在页面右上角(或者「Settings」标签页里)就能看到它的Map ID,格式是mapbox/streets-v8——这就是你要的MAPBOX_MAPID啦
  • 要是你之后想自定义地图样式,直接点「New style」选模板创建,完成后同样在样式详情页能拿到专属的Map ID
二、在OSMDroid中配置MapBox瓦片源

OSMDroid的默认TileSourceFactory里没有内置MapBox的选项,所以我们要自己构建TileSource,代码很简单:

首先定义你的MapBox凭证:

// 替换成你在MapBox官网拿到的Access Token
private static final String MAPBOX_ACCESS_TOKEN = "your-access-token-here";
// 官方MapBox Streets v8的Map ID
private static final String MAPBOX_MAP_ID = "mapbox/streets-v8";

然后构建并设置瓦片源:

// 拼接MapBox的瓦片请求URL模板
String tileUrlTemplate = "https://api.mapbox.com/styles/v1/" + MAPBOX_MAP_ID + "/tiles/{z}/{x}/{y}?access_token=" + MAPBOX_ACCESS_TOKEN;

// 创建自定义的TileSource
ITileSource mapBoxStreetsTile = new XYTileSource(
    "MapBoxStreets",  // 瓦片源名称,自定义就行
    0,                // 最小缩放级别
    22,               // 最大缩放级别,MapBox支持到22级
    256,              // 瓦片尺寸,默认256x256
    ".png",           // 瓦片格式
    new String[]{tileUrlTemplate}
);

// 把这个瓦片源设置给你的MapView
mapView.setTileSource(mapBoxStreetsTile);
// 你之前的其他配置可以保留
mapView.setTilesScaledToDpi(true);
mapView.setMultiTouchControls(true);
mapView.setVisibility(View.VISIBLE);
三、别忘了加必要权限

在AndroidManifest.xml里一定要加上网络权限,不然地图加载不出来:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

小提醒:上面的代码用的是MapBox的栅格瓦片服务,如果你之后想尝试矢量瓦片,需要额外引入osmdroid的矢量瓦片扩展库,但作为新手,先从栅格瓦片入手会更简单~

内容的提问来源于stack exchange,提问作者Cyrus the Great

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:21:31