arcgis android开发之添加地图控件并缩放至当前位置
来源:互联网 发布:新业汽修软件注册码 编辑:程序博客网 时间:2024/06/06 00:40
添加地图控件,在布局文件中是这样写的
<com.esri.android.map.MapView android:layout_width="match_parent" android:layout_weight="4" android:layout_height="0dp" android:id="@+id/mapview"> </com.esri.android.map.MapView>
主要是前面的com.esri.android.map.MapView,添加的是一个MapView控件,
接着在java代码中新建一个MapView,还是通过fingViewById的方法建立连接,
MapView map;map = (MapView)findViewById(R.id.mapview);然后添加一个图层,ArcGISTiledMapServiceLayer,
有好几种图层,具体的不同见以下网址:
https://developers.arcgis.com/javascript/3/jsapi/arcgisdynamicmapservicelayer-amd.html
用addLayer方法添加图层,当然,可以添加很多个图层
String strMapUrl = "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer";map.addLayer(new ArcGISTiledMapServiceLayer(strMapUrl));
或者两个合一起写也行。这个地图是中文的。
英文的url:"http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"
然后是缩放至当前位置,首先需要get当前位置的经纬度
无论是使用GPS还是Network都是可以的,获得了Location之后获取经纬度:
longitude = loc.getLongitude();latitude = loc.getLatitude();
接着新建Point,传入经纬度参数,再将该Point转换成你添加的地图的投影坐标系上的点
Point wgspoint = new Point(longi, lati);Point mapPoint = (Point) GeometryEngine.project(wgspoint, SpatialReference.create(4326), map.getSpatialReference());
上段代码第二行,用project方法转换点时第一个参数是待转换的点,第二个参数是输入的投影坐标,第三个参数是输出投影坐标
4326是GCS_WGS_1984 的wkid,具体的各个wkid可以看这个网址(http://www.cnblogs.com/liweis/p/5951032.html),下面有个附表,有大部分的投影坐标系的wkid
用下面的代码缩放至当前位置一定范围的地图:
Unit mapUnit = map.getSpatialReference().getUnit();double zoomWidth = Unit.convertUnits(3, Unit.create(LinearUnit.Code.MILE_US), mapUnit);Envelope zoomExtent = new Envelope(mapPoint, zoomWidth, zoomWidth);map.setExtent(zoomExtent);
如果不需要随时变动的话以上代码就可以结束了,但是现实中人拿着手机可能是不断运动的,,特别是开着车子跑的
这就需要地图随定位不断切换了
我们可以将上面缩放的那段代码放到定位中,位置变换的时候执行它
like this:
map.setOnStatusChangedListener(new OnStatusChangedListener() { private static final long serialVersionUID = 1L; public void onStatusChanged(Object source, STATUS status) { if (source == map && status == STATUS.INITIALIZED) { LocationDisplayManager locationManager=map.getLocationDisplayManager(); locationManager.setAutoPanMode(AutoPanMode.OFF); locationManager.setLocationListener(new LocationListener() { boolean locationChanged = false; public void onStatusChanged(String arg0, int arg1, Bundle arg2) { // TODO Auto-generated method stub } public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub } public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub } public void onLocationChanged(Location loc) { if (!locationChanged) { locationChanged = true; double lati = loc.getLatitude(); double longi = loc.getLongitude(); longitude = loc.getLongitude(); latitude = loc.getLatitude(); Point wgspoint = new Point(longi, lati); Point mapPoint = (Point) GeometryEngine .project(wgspoint, SpatialReference.create(4326), map.getSpatialReference()); Unit mapUnit = map.getSpatialReference() .getUnit(); double zoomWidth = Unit.convertUnits( SEARCH_RADIUS, Unit.create(LinearUnit.Code.MILE_US), mapUnit); Envelope zoomExtent = new Envelope(mapPoint, zoomWidth/3, zoomWidth/3); map.setExtent(zoomExtent); } } }); locationManager.start(); } } });
就酱
阅读全文
0 0
- arcgis android开发之添加地图控件并缩放至当前位置
- arcgis for android 学习 - (5) 在地图指定位置添加“标记“,并尝试选中它
- Arcgis Android API开发之离线地图
- 百度地图开发------基础地图篇------缩放空间和比例尺控件移动位置无效问题
- Android开发--控制Google地图--添加缩放图标
- ArcGIS for Android示例解析之添加地图服务-----AddLayer
- ArcGIS for Android 之本地离线地图添加(LocalTitledLayer)
- ArcGIS for android 实例应用之添加地图(1)
- Android开发中,集成百度地图时,如何去除地图中的比例尺控件和缩放控件
- ArcGIS API for JS 添加地图控件
- 动态添加控件并设置控件位置
- iOS开发------跳转至当前Application Setting界面
- ArcGIS for Android 体验(一) 添加地图
- ArcGIS for Android 体验(一) 添加地图
- ArcGIS for Android 体验(一) 添加地图
- arcgis for android 地图查询并定位
- ArcGIS for Android地图控件常见操作
- Android开发FrameLayout动态添加控件位置问题
- grid中显示blobImage上传的图片 通过本案例,我们实现blobImage上传的图片在grid表格中的显示。 grid的cellRender方法渲染单元格显示图片,例: 1 2 3 4 5
- 【转载】diff详细用法
- React+webpack 的开发环境配置步骤(四)
- leetcode --15. 3Sum
- <<opencv>>入门关于启动摄像头阈值化
- arcgis android开发之添加地图控件并缩放至当前位置
- Linux vmstat命令实战详解
- Android--------------百度地图
- Eclipse编辑环境设置
- Java过滤器流之BufferedInputStream与BufferedOutputStream
- leetcode 406. Queue Reconstruction by Height (贪心)
- 爬虫实践---今日头条<街拍>图片
- MapReduce编程模型概述
- Android Studio编译报错“java.lang.OutOfMemoryError: GC overhead limit exceeded”