Arcgis Android API开发之离线地图
最近一直在倒腾Arcgis Android API等相关的东西,想把自己的做的图放到地图上去,也就是离线地图,穷人一般是没有钱的,一个月好几十的流量是开不起的,所以就左捉摸,右思考,看着API里面有离线地图,始终没有弄明白是怎么回事,直到今天下午,想起来了就有试了试,结果成功了,那个激动啊,好半天那……
Arcgis Android API离线地图主要是通过ArcGISLocalTiledLayer实现的,下面是ArcGISLocalTiledLayer的相关内容:
java.lang.Objectcom.esri.android.map.Layer
com.esri.android.map.TiledLayer
com.esri.android.map.ags.ArcGISLocalTiledLayer
The ArcGISLocatlTiledLayer class is a type of tiled layer where the data is stored locally on the device, therefore this layer can function even when the device
does not have any network connectivity. The data for this layer must be in an ArcGIS Compact Cache format. The typical compact cache structure is as follows:
<CacheName>
Layers
_allLayers, conf.cdi, conf.xml
The path used in the constructor of the ArcGISLocalTiledLayer must point to the Layers folder e.g.
ArcGISLocalTiledLayer local = new ArcGISLocalTiledLayer("file:///mnt/sdcard/<CacheName>/Layers");
上面的内容是从帮助文档里面粘贴过来的,英文水平不高,就不翻译了,各位的水平肯定比我高。下面就把做的例子展示一下吧:
在做之前,需要把数据拷贝到手机的SD卡里面,我的在手机里是这样组织的:
所用的数据呢,是用Arcgis Server切片的数据。数据弄好之后,因为你要读取Sd卡上的内容,所以,你得在AndroidManifest.xml文件中添加用户权限:
<uses-permission android:name="android.permission.INTERNET" /><!-- 允许访问Internet --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 允许写入Sd卡 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
用户权限配置好之后,布局文件中加入mapview空间,布局文件main.xml的代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.esri.android.map.MapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent"> </com.esri.android.map.MapView> </LinearLayout>
Activity的代码如下:
/* Copyright 2012 ESRI * * All rights reserved under the copyright laws of the United States * and applicable international laws, treaties, and conventions. * * You may freely redistribute and use this sample code, with or * without modification, provided you include the original copyright * notice and use restrictions. * * See the �Sample code usage restrictions� document for further information. * */ package com.esri.arcgis.android.samples.localtiledlayer; import android.app.Activity; import android.os.Bundle; import com.esri.android.map.MapView; import com.esri.android.map.ags.ArcGISLocalTiledLayer; /** * This sample illustrates the use of ArcGISLocatlTiledLayer where the data is stored locally on the device, therefore * this layer can function even when the device does not have any network connectivity. The data for this layer must be * in an ArcGIS Compact Cache format or packaged as a Tile package (*.tpk). * * The typical compact cache structure is as follows: * <CacheName><br> * Layers<br> * _allLayers<br> * conf.cdi,conf.xml<br> * The path used in the constructor of the ArcGISLocalTiledLayer must point to the Layers folder e.g. <br> * ArcGISLocalTiledLayer local = new ArcGISLocalTiledLayer("file:///mnt/sdcard/<CacheName>/Layers"); * * A sample data set has been created and is available via ArcGIS Online: * http://www.arcgis.com/home/item.html?id=d2d263a280164a039ef0a02e26ee0501 * 1) In order to use the data, download it from the url above * 2) Copy the data to your sdcard * 3) Set the path to the data by replacing <Path-to-local-data> with file:///mnt/sdcard/Parcels/v101/Parcel Map * on line68 below. * * A sample Tile Map Package has been created and is available via ArcGIS Online: * http://www.arcgis.com/home/item.html?id=4497b7bb42e543b691027840d1b9092a * 1) In order to use the data, download it from the url above * 2) Copy the data to your device * 3) Set the path to the *.tpk file by replacing <Path-to-local-data> on line 68 below * * You can also use your own data if it is in an ArcGIS Compact Cache format, for more information on * this data format see this link: * http://blogs.esri.com/Dev/blogs/arcgisserver/archive/2010/05/27/Introducing-the-compact-cache-storage-format.aspx * **/ public class LocalTiledLayer extends Activity { MapView map = null; ArcGISLocalTiledLayer local; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); map = (MapView) findViewById(R.id.map); //the data is stored on the SDCARD //the data is created as a tiled cache //local = new ArcGISLocalTiledLayer("file:///mnt/sdcard/arcgis/Parcels/v101/Parcel Map"); local = new ArcGISLocalTiledLayer("file:///mnt/sdcard/arcgis/neimeng/Layers"); map.addLayer(local); } }
完成后效果如下图:
Arcgis Android API开发之离线地图的更多相关文章
- ArcGIS JavaScript API本地部署离线开发环境[转]
原文地址:http://www.cnblogs.com/brawei/archive/2012/12/28/2837660.html 1 获取ArcGIS JavaScript API API的下载地 ...
- ArcGIS for Android示例解析之离线地图-----LocalTiledLayer
转自:http://blog.csdn.net/wozaifeiyang0/article/details/7327423 LocalTiledLayer 看到这个标题是否是很激动,如题,该示例就是添 ...
- 基于 ArcGIS Silverlight API开发的WebGIS应用程序的部署
部署流程概述 在微软的iis服务器上部署基于ArcGIS Silverlight API的应用程序,主要包括以下几个步骤: 1)(可选)部署GIS服务 如果需要将GIS服务也部署在Web服务器上,则 ...
- Arcgis Javascript API 开发笔记
JS API3.4的要求 à(1) IE9或以上版本 否则dijit1.8.3不匹配 1.如何发布ArcgisJavascript API应用 0.准备工作: (1).有web应用: (2).有js ...
- ArcGIS JS API使用PrintTask打印地图问题解决汇总
环境:来源于工作过程,使用的API是 arcgis js 3.* 3系API,4.*暂时没测试: 1.数据与打印服务跨域情况下,不能打印问题. 一般情况下,我们发布的数据服务和打印服务是在一台服务 ...
- arcgis android 通过getExtent得到当前地图范围四个点的坐标
困扰了我很久的问题终于要得到解决了,先欢喜一下.我的目的是想做一个当程序完全退出后,再次打开程序地图直接显示上次程序退出前地图的范围.arcgis for android官方软件就有这个功能.网上搜索 ...
- Android API 文档 离线秒开方法
http://blog.csdn.net/haifengzhilian/article/details/39898627 也是最近才看Android开发,但是,它的API文档无论是在线还是离线的,实在 ...
- ARCGIS FLEX API加载google地图、百度地图、天地图(转)
http://www.cnblogs.com/chenyuming507950417/ Flex加载google地图.百度地图以及天地图作底图 一 Flex加载Google地图作底图 (1)帮助类G ...
- 为android游戏开发-准备的地图编辑器-初步刷地图
采用多文理混合,单页面支持8张文理进行刷绘
随机推荐
- 按钮js跳转到非表单提交页
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Linux知识点总结
- linux(6/17)--文件打包上传和下载
tar命令 命令功能 用来压缩和解压文件 命令格式 tar[必要参数][选择参数][文件] tar打包工具 -f ##指定生成包的名字,建议 -f单独写成一个参数 --delete filename ...
- 认识shiro
shiro是安全(权限)框架,不仅可以在javase中也可以在javaee中 shiro可以完成认证.授权.加密.会话管理,与web进行集成.缓存等. Authentication:身份认证/登录,验 ...
- C# int32与int64的区别 附加:字符字节关系
int32 =int int64 =long 1byte=8bit unicode 占2btye int32 占 1 btye long 占 4 btye
- CMD 配置静态IP与DNS
配置静态IP与DNS # 修改IP netsh interface ip set address "网络连接" static IP地址 子网掩码 默认网关 # 修改DNS nets ...
- [pixhawk笔记]1-编译过程
好久没有编译过PIXHAWK了,由于项目需要,又买了一个pixhawk2,由于每次编译都会出现新的问题,这次写帖子将过程记录下来. 环境:WIN10+Ubuntu16.04 64位(VMware Wo ...
- pxe-kickstart批量部署文档
#PXE安装: yum install syslinux xinetd tftp-server httpd -y yum install dhcp -y yum install system-conf ...
- mysql 进阶查询(学习笔记)
学习笔记,来源:实验楼 ,链接: https://www.shiyanlou.com/courses/9 一.日期计算: 1.要想确定每个宠物有多大,可以使用函数TIMESTAMPDIFF()计算 ...
- mfc报文相关算法
1.传入_T("AAAABBBBCC"),返回_T("AA AA BB BB CC") CString FormatPacket(CString packet_ ...