这是这阶段arcgis for Android 的最后一篇了,前面有三篇。对于我经常使用坐标,进行绘制点线面图形的程序员,这个必须要的。因为在项目中经常用到。

arcgis for Android 100.1 基本操作(缩小放大旋转定位)

arcgis for Android 100.1 在线加载天地图和谷歌地图

arcgis for Android 100.2 加载shp

1、效果显示

2、代码实现

package com.arcgis.activity;import android.content.res.Resources;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;import com.arcgis.R;
import com.esri.arcgisruntime.geometry.Point;
import com.esri.arcgisruntime.geometry.PolygonBuilder;
import com.esri.arcgisruntime.geometry.PolylineBuilder;
import com.esri.arcgisruntime.geometry.SpatialReference;
import com.esri.arcgisruntime.geometry.SpatialReferences;
import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.Viewpoint;
import com.esri.arcgisruntime.mapping.view.Graphic;
import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
import com.esri.arcgisruntime.mapping.view.LocationDisplay;
import com.esri.arcgisruntime.mapping.view.MapView;
import com.esri.arcgisruntime.symbology.PictureMarkerSymbol;
import com.esri.arcgisruntime.symbology.SimpleFillSymbol;
import com.esri.arcgisruntime.symbology.SimpleLineSymbol;
import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;
import com.esri.arcgisruntime.symbology.SimpleRenderer;public class ArcgisDrawActivity extends AppCompatActivity implements View.OnClickListener {private String mapServerUrl = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer";private MapView mMapView;LocationDisplay locationDisplay;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_map_2);mMapView = (MapView) findViewById(R.id.map_view);initView();}private void initView() {findViewById(R.id.button4).setOnClickListener(this);findViewById(R.id.button5).setOnClickListener(this);findViewById(R.id.button6).setOnClickListener(this);findViewById(R.id.button7).setOnClickListener(this);ArcGISTiledLayer tiledLayer = new ArcGISTiledLayer(mapServerUrl);Basemap basemap = new Basemap(tiledLayer);ArcGISMap map = new ArcGISMap(basemap);mMapView.setMap(map);locationDisplay = mMapView.getLocationDisplay();locationDisplay.setAutoPanMode(LocationDisplay.AutoPanMode.RECENTER);locationDisplay.startAsync();locationDisplay = mMapView.getLocationDisplay();Resources resources=getResources();BitmapDrawable bitmapDrawable= new BitmapDrawable(BitmapFactory.decodeResource(resources,R.drawable.arcgisruntime_location_display_default_symbol));final PictureMarkerSymbol campsiteSymbol = new PictureMarkerSymbol(bitmapDrawable);campsiteSymbol.loadAsync();campsiteSymbol.addDoneLoadingListener(new Runnable() {@Overridepublic void run() {locationDisplay.setDefaultSymbol(campsiteSymbol);//设置默认符号locationDisplay.setShowAccuracy(false);//隐藏符号的缓存区域}});}protected void onResume() {super.onResume();mMapView.resume();}@Overrideprotected void onPause() {super.onPause();mMapView.pause();}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button4://放大Point point = locationDisplay.getMapLocation();ArcGISMap map = new ArcGISMap(Basemap.createImageryWithLabelsVector());//center for initial viewpoint// 这个Point是按照经纬度模式 跟osmdroid定位刚好反过来//patialReference.create(4326) 参考坐标系   4326 是WGS84 的坐标
//                Point center = new Point(113.365548756, 23.12648183, SpatialReference.create(4326));//set initial viewpoint//9000 是缩放比例   这缩放比例参数也是独树一帜啊map.setInitialViewpoint(new Viewpoint(point, 9000));// set the map to the map viewmMapView.setMap(map);break;case R.id.button5://// point graphicPoint pointGeometry = new Point(113.365548856, 23.12698183, SpatialReferences.getWgs84());// red diamond point symbolSimpleMarkerSymbol pointSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.DIAMOND, Color.RED, 10);// create graphic for pointGraphic pointGraphic = new Graphic(pointGeometry);// create a graphic overlay for the pointGraphicsOverlay pointGraphicOverlay = new GraphicsOverlay();// create simple rendererSimpleRenderer pointRenderer = new SimpleRenderer(pointSymbol);pointGraphicOverlay.setRenderer(pointRenderer);// add graphic to overlaypointGraphicOverlay.getGraphics().add(pointGraphic);// add graphics overlay to the MapViewmMapView.getGraphicsOverlays().add(pointGraphicOverlay);break;case R.id.button6://// line graphicPolylineBuilder lineGeometry = new PolylineBuilder(SpatialReferences.getWgs84());lineGeometry.addPoint(113.365548756, 23.12648183);lineGeometry.addPoint(113.362548856, 23.12548283);// solid blue line symbolSimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLUE, 5);// create graphic for polylineGraphic lineGraphic = new Graphic(lineGeometry.toGeometry());// create graphic overlay for polylineGraphicsOverlay lineGraphicOverlay = new GraphicsOverlay();// create simple rendererSimpleRenderer lineRenderer = new SimpleRenderer(lineSymbol);// add graphic to overlaylineGraphicOverlay.setRenderer(lineRenderer);// add graphic to overlaylineGraphicOverlay.getGraphics().add(lineGraphic);// add graphics overlay to the MapViewmMapView.getGraphicsOverlays().add(lineGraphicOverlay);break;case R.id.button7:////polygon graphicPolygonBuilder polygonGeometry = new PolygonBuilder(SpatialReferences.getWgs84());polygonGeometry.addPoint(113.366548156, 23.12248283);polygonGeometry.addPoint(113.362548356, 23.12348383);polygonGeometry.addPoint(113.368548656, 23.12248683);polygonGeometry.addPoint(113.367548956, 23.127648983);// solid yellow polygon symbolSimpleFillSymbol polygonSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.YELLOW, null);// create graphic for polygonGraphic polygonGraphic = new Graphic(polygonGeometry.toGeometry());// create graphic overlay for polygonGraphicsOverlay polygonGraphicOverlay = new GraphicsOverlay();// create simple rendererSimpleRenderer polygonRenderer = new SimpleRenderer(polygonSymbol);// add graphic to overlaypolygonGraphicOverlay.setRenderer(polygonRenderer);// add graphic to overlaypolygonGraphicOverlay.getGraphics().add(polygonGraphic);// add graphics overlay to MapViewmMapView.getGraphicsOverlays().add(polygonGraphicOverlay);break;}}}

这里有一个注意就是,画图的用经纬度是在那个坐标系统下面的。一般来说都是使用WGS84坐标。

3、这里看一个三维地图,挺好玩的

实现代码很简单

package com.arcgis.activity;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;import com.arcgis.R;
import com.arcgis.until.TianDiTuMethodsClass;
import com.esri.arcgisruntime.geometry.Point;
import com.esri.arcgisruntime.geometry.SpatialReference;
import com.esri.arcgisruntime.layers.ArcGISSceneLayer;
import com.esri.arcgisruntime.layers.ArcGISTiledLayer;
import com.esri.arcgisruntime.layers.WebTiledLayer;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.ArcGISScene;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.view.MapView;
import com.esri.arcgisruntime.mapping.view.SceneView;public class ArcgisThreeDimensionalMapActivity extends AppCompatActivity {private SceneView sceneView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_scene);sceneView = (SceneView) findViewById(R.id.sceneview);ArcGISScene arcGISScene = new ArcGISScene(Basemap.createImagery());ArcGISSceneLayer arcGISSceneLayer = new ArcGISSceneLayer("https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer");arcGISScene.getOperationalLayers().add(arcGISSceneLayer);sceneView.setScene(arcGISScene);}protected void onResume() {super.onResume();sceneView.resume();}@Overrideprotected void onPause() {super.onPause();sceneView.pause();}
}

最后还是一样注意权限

还有就是你的编译版本是6.0及以上,需要权限管理,动态加载。

    <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

到这里就结束吧,稍后我会把这四篇文章的代码打包csdn下载

arcgis for Android 100.2 绘制点线面(文末有三维地图)相关推荐

  1. arcgis for Android 100.1 在线加载天地图和谷歌地图

    距离上一篇arcgis for Android 已经很久.其实年初的时候就测试了arcgis for Android 100.1版本.搜集网上各篇文章,最后自已测试代码.修改代码.这一篇来讲一下加载在 ...

  2. ArcGIS for Android 100.3.0(14):移动地图包MMPK的使用

    MobileMapPackage 移动地图包是ArcGIS Pro里新推出的一种离线地图数据,配合ArcGIS Runtime 100使用. 移动地图包是一个以".mmpk"结尾的 ...

  3. arcgis for Android 100.4 面积测量

    arcgis for Android 100.4 面积测量为负时进行拓扑简化就行了.

  4. ArcGIS for Android 100.3.0(10):Callout的使用

    通过调用从MapView的getCallout()获取Callout对象. 官方API: https://developers.arcgis.com/android/latest/api-refere ...

  5. mmpk文件的打包与加载(ArcGIS for Android 100.x)

    一.mmpk文件的生成 移动地图包是一个以".mmpk"结尾的单独文件扩展,它可以将你的组织的maps.资源.道路网.或者坐标集成到一个文件.根据这些数据你的用户就可以清楚自己的方 ...

  6. ArcGIS for Android 100.3.0(9):GPS定位

    ArcGIS Runtime 100定位类--LocationDisplay 其官方解释为:管理当前位置在显示地图里的展示,包括当前位置的信息,符号,以及随地图的平移.旋转.缩放等进行自动变化. 也就 ...

  7. 别好奇了,Excel绘制闪到发光的三维地图真的很简单!

    excel 绘制三维地图,简单.快捷,今天分享给大家 大概需要 2-4 分钟就可以学会 ok,直接开始 首先 ,你要确保你的数据文件不是一个 csv 文件 因为三维地图不能在 csv 文件中插入.所以 ...

  8. 别好奇了,excel 绘制闪到发光的三维地图真的很简单!

    大家好,我是小一 今天的文章来自于朋友圈,在基站分布那一篇文章中用到 excel 绘制三维地图,发现大家并不了解这种绘图方式 鉴于在工作中我个人比较常用这种绘图方式,简单.快捷,所以今天分享给大家 大 ...

  9. arcgis for Android 100.3.0 加载shp数据以及操作

    ArcGIS Runtime 100.2.0的正式发布带来个更多移动端的处理地图的能力,例如支持WMS图层.支持海图(ENC)图层,再如基于场景相机(Camera)的视域分析.同时还提供了新的统计查询 ...

最新文章

  1. linux下字符串处理工具二:awk( 二),awk脚本
  2. 海啸级后浪!“天才少年”曹原再次连发2篇Nature!
  3. KaliLinuxNetHunter教程下载相关资源
  4. css宽高自适应布局,实现Sticky Footer的三种布局方式
  5. 蛋白对接_JCIM | 金属蛋白分子对接程序哪家强?七种对接程序的基准测试
  6. php获得可靠的精准的当前时间 ( 通过授时服务器 )
  7. python writelines_Python文件writelines()方法
  8. android 7修改机型,Android 7.0支持机型大全
  9. ASC2BCD及奇偶校验位
  10. ubuntu安装搜狗拼音输入法
  11. 公众号接收用户消息—《微信公众平台开发实战与应用案例》—陈小龙
  12. 【第4章】网络安全体系与网络安全模型(信息安全工程师)
  13. 联想小新笔记本电脑显示很暗, 教你如何将将其亮度调到最高
  14. 【Android Studio学习】第一篇、制作一个拥有登录和注册功能的简易APP
  15. STM32 USB HID设置(STM32CubeMX)
  16. Silverlight 5 强袭 !! 圣临王者之三端大一统
  17. Hyperlegder Fabric监控:blockchain-explorer
  18. 用telnet+openocd+jtag_dpi+vcs仿真调试RISCV的cpu
  19. snapcraft动手实践 --- Web Camera
  20. 用java建立多项式logit模型_请问logit模型和logistic模型是不是一样的?

热门文章

  1. db2数据库date和timestamp日期转换to_char()函数
  2. sap进阶系列(16):第一篇:财务总览之全面预算管理
  3. App 打包提交APP Store途中遇到蛋疼的ERROR ITMS-90035
  4. 在台式电脑上完美安装Mac OS X操作系统的解决方案
  5. 苏州:既为“鸡头”,又为“凤凰”
  6. Linux安装消息队列IBM MQ 7.5开发版安装配置详解
  7. 使用百度BMap地图
  8. 西门子博途TIA Portal V15.0同时打开两个项目的方法
  9. 噢!查重原来是这样实现的啊!
  10. gis差值分析_arcgis中七种插值方法的对比分析