导言:
由于目前市面上地图的产品很多,比如百度,高德,arcgis,showmap等,所以需要根据公司和项目需求选择对应的产品,今天简单记录下arcgis配置和常见使用方法
官方文档: https://developers.arcgis.com/android/java/sample-code/
接入(若接入时一直失败,可换gradle版本或者Maven路径)
a:先在project 下的build.gradle中添加仓库
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
//下面两个试着用,有时GIS某个版本会下载失败
//maven { url 'https://esri.bintray.com/arcgis' }
//maven { url 'https://esri.jfrog.io/artifactory/arcgis' },
}
}
b:在app下的build.gradle中引入所需版本sdk
dependencies {
//arcgis地图
api 'com.esri.arcgisruntime:arcgis-android:100.3.0'
}
c:在build.gradle中的android的defaultConfig中设置运行的ndk
defaultConfig {
ndk {
abiFilters "armeabi-v7a"
}
}
d:manifest.xml里设置权限和相关设置
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
常见使用
显示地图
1,添加布局文件
<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>
2:初始化并显示图层
@BindView(R.id.mapView)
MapView mMapView;
@Override
public void onResume() {
super.onResume();
mMapView.resume();
mMapView.setVisibility(View.VISIBLE);
}
//解决webview和mapview黑屏问题
@Override
public void onPause() {
super.onPause();
mMapView.pause();
mMapView.setVisibility(View.INVISIBLE);
}
//添加GraphicsOverlay图层
mMapView.getGraphicsOverlays().add(gOverlays);
初始化配置
//底部文字除去
mMapView.setAttributionTextVisible(false);
//天地图
WebTiledLayer tdWebTiledLayer = TianDiTuMethodsClass.CreateTianDiTuTiledLayer(TianDiTuMethodsClass.LayerType.TIANDITU_VECTOR_2000);
WebTiledLayer tdWebTiledLayer1 = TianDiTuMethodsClass.CreateTianDiTuTiledLayer(TianDiTuMethodsClass.LayerType.TIANDITU_VECTOR_ANNOTATION_CHINESE_2000);
//卫星图
WebTiledLayer wxWebTiledLayer = TianDiTuMethodsClass.CreateTianDiTuTiledLayer(TianDiTuMethodsClass.LayerType.TIANDITU_IMAGE_2000);
WebTiledLayer wxWebTiledLayer1 = TianDiTuMethodsClass.CreateTianDiTuTiledLayer(TianDiTuMethodsClass.LayerType.TIANDITU_IMAGE_ANNOTATION_CHINESE_2000);
//添加底图
Basemap basemap = new Basemap(tdWebTiledLayer);
basemap.getBaseLayers().add(tdWebTiledLayer1);
basemap.getBaseLayers().add(wxWebTiledLayer);
basemap.getBaseLayers().add(wxWebTiledLayer1);
//显示底图
tdWebTiledLayer.setVisible(true);
tdWebTiledLayer1.setVisible(true);
wxWebTiledLayer.setVisible(false);
wxWebTiledLayer1.setVisible(false);
ArcGISMap arcGISMap = new ArcGISMap(basemap);
mMapView.setMap(arcGISMap);
ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud5799562951,none,PM0RJAY3FLLR2B3TR001");
定位点位
mMapView.setViewpointCenterAsync(new Point(121.48367, 31.3955, mMapView.getSpatialReference()), AppConstant.SCALE_SIZE);
普通气泡和自定义气泡
//普通气泡
//初始化布局
Point mapPoint = new Point(121.41288889f, 31.46202