版本:arcgis-android-10.2.7
配置:
A。用Android Studio创建一个Android项目,然后找到我们需要引用的本地arr文件;
arcgis-android-1.2.7.aar
B。将本地arr文件Copy到我们项目的libs文件夹下(和jar一个目录);
dependencies {
compile (name: 'arcgis-android-10.2.7', ext: 'aar')}在build.gradle的安卓中加入
repositories{ flatDir { dirs 'libs' }}
packagingOptions{
exclude 'META-INF/LGPL2.1'
exclude('META-INF/LICENSE')
exclude('META-INF/NOTICE')
}
完成之后首先来看看ArcGis文档:
1.MapView 类是 ArcGIS API For Android 里最主要的地图组件,它用来显示一组地图服务。MapView 类默认可以使用触摸进行地图导航,默认的地图导航有,放大,缩小,平移。
2.MapView 类直接继承于 Android 的 ViewGroup,因此,MapView 类集成了 Android ViewGroup 的所有方法和属性,应用起来非常简单,就像使用 Android 其他视图组件一样。
3.MapView 至少要有一个 LayerView。 MapView 是所有 LayerView 的父类。 LayerView 类是所有加载到 MapView 上的图层类的基类。在 MVC 架构中,这个类代表着 View,它用来处理这个架构功能相关的图片渲染。可以使用抽象类的任何一个子类。
第一步:
<com.esri.android.map.MapView
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.esri.android.map.MapView>
mMapView= (MapView) findViewById(R.id.mapview);
gradle中加上:compile 'com.google.android.gms:play-services-appindexing:8.1.0'
@Override protected void onDestroy() { super.onDestroy(); mMapView.destroyDrawingCache(); } @Override protected void onResume() { super.onResume(); mMapView.unpause(); } @Override protected void onPause() { super.onPause(); mMapView.pause(); }
第二步:
private GoogleMapLayer YXLayer;// 影像图层 private GoogleMapLayer XZQHLayer;// 行政区划图层【这两个类后面会贴出来】
可以查看我的博客【ArcGis、高德计算选中地块的面积】文章
try { YXLayer = new GoogleMapLayer(GoogleMapLayerTypes.IMAGE_GOOGLE_MAP, ""); XZQHLayer = new GoogleMapLayer( GoogleMapLayerTypes.ANNOTATION_GOOGLE_MAP, ""); mMapView.addLayer(YXLayer); mMapView.addLayer(XZQHLayer); } catch (Exception e) { }第三步:经过这些之后,就能够使用地图了,记得添加权限,;
后面我们调用MeasuringTool这个类;
SimpleFillSymbol fillSymbol; Unit[] linearUnits = new Unit[] { Unit.create(LinearUnit.Code.METER) }; //点 SimpleMarkerSymbol markerSymbol = new SimpleMarkerSymbol(Color.BLUE, 10, SimpleMarkerSymbol.STYLE.DIAMOND); //线 SimpleLineSymbol lineSymbol = new SimpleLineSymbol(Color.YELLOW, 3); fillSymbol = new SimpleFillSymbol(Color.argb(100, 0, 225, 255)); fillSymbol.setOutline(new SimpleLineSymbol(Color.TRANSPARENT, 0)); // 创建所需的工具。 // MyMeas measuringTool = new MyMeas(mMapView); MeasuringTool tool=new MeasuringTool(mMapView); // 自定义工具 可选 tool.setLinearUnits(linearUnits);//模式 tool.setMarkerSymbol(markerSymbol);//点 tool.setLineSymbol(lineSymbol);//线 tool.setFillSymbol(fillSymbol); startActionMode(tool);【我是从之前项目中截取的代码,可能有冗余 见谅】
这样我们运行之后 首先选择屏幕右上方的向下的按钮,选中第一项的Area;第二项可以不用选择;这样 我们在地图上选择封闭的点 就能算出选中地区的平方米了;
=========================================
后面让我们来看看MeasuringTool:
MeasuringTool的draw()方法;[该方法在每次点击地图时就会调用去绘制]
当我们点击地图绘制左边点时,会调用this.mResult = GeometryEngine.geodesicArea(this.mPolygon, this.mMap.getSpatialReference(), (AreaUnit)this.getAreaUnit(this.mCurrentAreaUnit));
方法 去计算圈中几何的面积;
最后给大家分享一个在线地图测量距离和面积的网址:点击打开;
下面这个地址是Git 上ArcGis各种例子的地址:Git上的例子
这个例子中Measure就用到了咱们上面的;