矢量切片(VTPK)就是将矢量数据以建立金字塔的方式,像栅格切片那样分割成一个一个瓦片,以pbf格式组织,在前端根据请求的范围提供矢量瓦片数据进行绘图。
矢量切片的优势:
- 切图体积小
- 切图效率高
- 传输、渲染速度快
- 可以直接修改矢量切片文件的样式,不需要重新切图
- 可以动态切换不同语言标注
- 高分屏中显示很好
关于矢量切片的详细介绍,可以观看Esri公开课 重磅解析-arcgis矢量切片。
本文主要讲解如何在ArcGIS Runtime SDK for Android中用在线方式进行矢量切片图层的显示,在后面也会有本地方式调用矢量切片的讲解。
实现步骤:
1.创建Android项目
2.添加Runtime SDK依赖
3.添加权限及OpenGL ES支持
前三步本文省略,初学者可参照ArcGIS Runtime SDK for Android 学习笔记(1):第一个地图应用程序(二维)
4.设置界面布局
在layout中的布局XML中添加:
<!-- MapView控件 -->
<com.esri.arcgisruntime.mapping.view.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.esri.arcgisruntime.mapping.view.MapView>
5.编写代码
在布局对应的Activity中:
(1)变量准备:
//MapView控件变量
private MapView mMapView;
//矢量切片图层变量
private ArcGISVectorTiledLayer mVectorTiledLayer;
(2)在onCreate方法中:
// 通过布局文件初始化MapView
mMapView = findViewById(R.id.mapView);
// 通过URL加载并创建矢量切片图层对象
mVectorTiledLayer = new ArcGISVectorTiledLayer(getString(R.string.mid_century_url));
// 设置切片图层作为底图
Basemap basemap = new Basemap(mVectorTiledLayer);
// 创建一个底图对象并设置底图
ArcGISMap map = new ArcGISMap(basemap);
// 通过经度、纬度、比例尺创建视点
Viewpoint vp = new Viewpoint(47.606726, -122.335564, 72223.819286);
// 初始化底图范围
map.setInitialViewpoint(vp);
// 显示底图
mMapView.setMap(map);
6.运行APP:可对矢量切片地图进行简单浏览与缩放。
7.进阶:通过Fragment侧边栏效果实现矢量切片图层的切换,详见:
ArcGIS Runtime SDK for Android 进阶:通过侧滑菜单实现图层切换---以矢量切片图层为例
感谢luq老师的指导