Mapbox Android学习笔记(4)数据驱动样式设计

数据驱动样式设计

使用 Maps SDK 的数据驱动样式化功能来创建和显示多种类型的数据。您可以根据特定数据集中的信息实时动态地更改地图的外观和感觉。数据驱动的样式很大程度上建立在 sources 和 layers 的思想之上。

注意:Sources 和 layers 提供了灵活的选项来定制Mapbox地图的外观和地图上显示的数据。Android的Mapbox注释插件提供了一个简化的系统,用于与Mapbox映射层交互和定制Mapbox Map layers 。

1. Sources 源

源包含实际的数据和层引用源。这就是如何在Mapbox地图上显示数据。支持多种不同的源类型,选择正确的源类型取决于您的数据类型。添加源不会立即使数据出现在地图上,因为源不包含诸如颜色或宽度之类的样式细节。层引用一个源并给它一个可视化的表示。

使用一个源文件需要两个参数。源需要一个惟一的字符串ID并需要某种类型的数据。

Vector 矢量

VectorSource 块必须是 Mapbox 矢量块格式。所有使用矢量源的层都必须指定一个“源层”值。对于由 Mapbox 承载的向量块,URL值的形式应该是:Mapbox://mapid,例如:

// 添加一个矢量源层
VectorSource vectorSource = new VectorSource("vector-source", "mapbox://mapbox.mapbox-terrain-v2");

mapboxMap.getStyle().addSource(vectorSource);
Raster 栅格

如果 RasterSource 块是 TileJSON 格式的,可以将它们添加到map中。如果由Mapbox承载,URL值应该是形式:Mapbox://mapid,例如:

// 添加一个栅格源层
RasterSource rasterSource = new RasterSource("raster-source", "mapbox://mapbox.u8yyzaor");

mapboxMap.getStyle().addSource(rasterSource);
GeoJson

可以通过几种不同的方式添加 GeoJsonSource。您可以提供一个指向在线托管的 GeoJSON 原始数据的URL,提供一个指向本地托管在应用程序的assets文件夹中的 GeoJSON 文件的链接,或者您可以在代码中直接构建自己的 GeoJSON 特征集合(FeatureCollection)。下面的代码片段展示了向地图添加 GeoJSON 源的不同方法。
(1)从URL添加一个GeoJSON源

try {
  URL geoJsonUrl = new URL("https://url-to-geojson-file.geojson");
  GeoJsonSource geoJsonSource = new GeoJsonSource("geojson-source", geoJsonUrl);
  mapboxMap.getStyle().addSource(geoJsonSource);
} catch (MalformedURLException exception) {
  Log.d(TAG, exception);
}

(2)加载本地存储的GeoJSON文件。要么使用下面找到的loadJsonFromAsset()方法,要么使用自己喜欢的方式加载JSON文件

private String loadJsonFromAsset(String nameOfLocalFile) throws IOException {
  InputStream is = getAssets().open(本地存储的GeoJSON文件名);
  int size = is.available();
  byte[] buffer = new byte[size];
  is.read(buffer);
  is.close();
  return new String(buffe
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值