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张文理进行刷绘
随机推荐
- 微信小程序学习笔记(7)--------布局基础
ui布局基础 一.flex布局 1.flex的容器和元素 2.flex容器属性详解 1>flex-direction不仅设置元素的排列方向,还设置主轴和交叉轴如下图主轴是由上到下 2&g ...
- [MySQL] 实现树形的遍历(关于多级菜单栏以及多级上下部门的查询问题)
前言: 关于多级别菜单栏或者权限系统中部门上下级的树形遍历,oracle中有connect by来实现,MySQL没有这样的便捷途径,所以MySQL遍历数据表是我们经常会遇到的头痛问题 ...
- Linux网络性能评估工具iperf 、CHARIOT测试网络吞吐量
网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理.网络存在安全漏洞等原因,都会导致网络带宽利用率不高.要找到网络带宽利用率不高的原因,就需要对网 ...
- try-catch-finally的问题
参考: https://blog.csdn.net/chengzhezhijian/article/details/17264531 面试一家公司的面试题,注: 那个面试官对这个问题挺看重的(可是我回 ...
- Rreact Native 常见错误总结
1.invariant violation:expected a component class,got[object object] 创建自定义组件首字母要大写,否则会报错. ...
- 启动工程Ehcache报错
缓存组建用的Ehcache,在启动的时候报了下面的错误,虽然不影响使用,看着还是有点碍眼: DEBUG net.sf.ehcache.util.UpdateChecker - Update che ...
- Spring_自动装配
Beans-autowire.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns=& ...
- redis主从、集群、哨兵
redis的主从.集群.哨兵 参考: https://blog.csdn.net/robertohuang/article/details/70741575 https://blog.csdn.net ...
- Hibernate -- 操作持久化对象
知识点2: session概述 Session 接口是 Hibernate 向应用程序提供的操纵对数据库的最主要的接口,它提供了基本的保存,更新, 删除和加载Java对象的方法. 知识点3:理解ses ...
- LeetCode 之 TwoSum
题目: Given an array of integers, find two numbers such that they add up to a specific target number. ...
