tpk是ArcGIS 10.1推出的一种新的数据文件类型,主要用于将切片文件打包行程离线地图包,tpk可以在ArcGIS Runtime或ArcGIS for Android/IOS中作为切片底图被加载。从地图或底图生成切片,并将切片进行打包从而创建单个压缩的 .tpk 文件。切片包(.tpk)是在地图或栅格数据集中能作为 Web 切片或 Web 高程图层发布的一组切片(图像)。
arcgis生成的tpk修改后缀为zip后:
矢量切片(vtpk)是一种利用协议缓冲(Protocol Buffers)技术的紧凑的二进制格式用来传递信息。通俗的说,就是将矢量数据以建立金字塔的方式,像栅格切片那样分割成一个一个描述性文件,以GeoJson格式或者以pbf等自定义格式组织,然后在前端根据显示需要按需请求不同的矢量瓦片数据进行Web绘图。[更多详情]
目前根据ESCAGE博主所知道的矢量切片生成方式共有以下几种:1)ArcGIS 系列产品:利用ArcGIS Pro生成矢量切片,然后发布在ArcGIS Online上;2)Mapbox;3)GeoServer,在2.11beta版中出现了对矢量切片的支持;4)自己编写切片工具
arcgis pro生成的vtpk修改后缀为zip后:
ArcGIS切片包(tpk)的创建
ArcGIS Pro 生成vtpk [其他链接]
1.创建Android项目
2.添加Runtime SDK依赖
ESRI提供了两种SDK方式,一种是本地方式,但此种方式较为麻烦,另一种是联网方式,这里采用的是联网方式。
在Project的./build.gradle中添加:
allprojects {
repositories {
google()
jcenter()
// 添加Esri公共Bintray Maven repository
maven {
url 'https://esri.bintray.com/arcgis'
}
}
}
在./app/build.gradle中添加:
dependencies {
[其他implementation]
//添加Runtime依赖
implementation 'com.esri.arcgisruntime:arcgis-android:100.3.0'
implementation fileTree(dir: 'libs', include: ['*.jar'])
}
注:若出现“Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 19 declared in library [com.esri.arcgisruntime:arcgis-android:100.3.0]”等类似的错误,则需要修改AndroidSDK版本,方法:
在Module的Build.gradle中修改:
minSdkVersion 19
3.添加权限及OpenGL ES支持
在./app/src/main/AndroidManifest.xml中添加:
4.设置界面布局
在./app/src/main/res/layout中的activity_main.xml中添加MapView控件:
5.编写代码
思路:MapView用于显示地图(ArcGISMap),而地图(ArcGISMap)需要设置底图(Basemap),底图(Basemap)需要图层(ArcGISTiledLayer / ArcGISVectorTiledLayer)。
步骤:在上步布局相应的Activty的onCreate方法中:
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.view.MapView;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
import com.esri.arcgisruntime.layers.ArcGISVectorTiledLayer;
public class MainActivity extends AppCompatActivity {
MapView mapView;
ArcGISTiledLayer tiledLayer;
ArcGISMap map;
Basemap basemap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapView);
String fileTPK = Environment.getExternalStorageDirectory().getAbsolutePath()+"/myTestTPK.tpk";
tiledLayer = new ArcGISTiledLayer(fileTPK); // tpk
// tiledLayer = new ArcGISVectorTiledLayer(fileVTPK); //vtpk
basemap = new Basemap(tiledLayer);
map = new ArcGISMap(basemap);
mapView.setMap(map);
}
}
6.运行APP:可以进行简单的2D地图的浏览与缩放
AndroidStudio项目生成APK文件
Android Studio打包没有Generate signed apk选项
apk生成位置:/设置的工程存储路径/项目名/app/release(或是debug)/xxx.apk
推荐该博主的一系列入门教程:ArcGIS Runtime SDK for Android 入门(1):第一个地图应用程序(二维)
Android Studio入门项目编写
Android Studio将本地计算机文件上传到模拟器scard文件中
Android Studio 3.0找不到Android Device Monitor
Arcgis for Android加载tpk文件遇到的错误
WebGIS中矢量切图的初步研究