互联网地图发展
在2000年左右,互联网地图采用CS架构。使用者需要预先在本地安装客户端软件,并且下载保存矢量地图信息的.shp文件才能浏览使用地图。客户端软件有Arcmap、MapInfo等。
当Ajax技术兴起后,BS架构的互联网地图随之兴起。Google最初推出WebGIS。用户不用安装客户端软件,可以通过浏览器直接浏览地图。
瓦片地图
瓦片技术也是BS架构互联网地图服务实现的原因之一。
对于地图使用者来说,他关注的是由矢量数据渲染出来的地图图片,但一张包含世界地物信息的地图何其之大,若用户每次使用浏览地图时都要下载和显示这张地图明显是不现实的。瓦片技术就是将已经渲染好的不同缩放等级的地图图片按固定大小切片(为了节省存储空间,一般256*256),并顺序命名(比如“2,0,0”,代表第二个图层x轴第1张,y轴第一张图片)。这样当用户查看地图时,只需要请求目前浏览部分的图片即可。
瓦片技术又分为栅格瓦片和矢量瓦片。栅格瓦片就是图片切片,矢量瓦片是地图点线面矢量数据(为了减少客户端计算量,存储的不是坐标位置而是相对位置)。矢量瓦片使用的内存更小且交互性更强,目前移动端大部分软件都是使用矢量瓦片或栅格矢量结合,浏览器因为计算能力弱,所以大多使用栅格瓦片。
矢量地图渲染
Shape文件存储了地图中所有点线面的地理坐标位置。将shp文件渲染到电脑屏幕上时,第一个要素是坐标系转换,因为坐标使用坐标系和电脑屏幕使用坐标系是不同的。如图(左地理坐标)
第二个要素是单位转换,地理坐标系每个单位是度量单位,而屏幕坐标系单位是像素,必须要通过某个转换率进行转换。参考网站:map.geoq.cn/ArcGIS/rest/services
地图缩放拖动功能
地图缩放和拖动是浏览地图必不可少的操作。在没有瓦片技术时,每次缩放和拖动,客户端软件会先计算目前屏幕的坐标范围,然后遍历shp文件,将其中属于该范围的点线面数据渲染出来,所以每次放大和拖动速度很慢且耗费性能。
当瓦片技术兴起后,放大和拖动只需要根据层级和显示范围,就可以根据每个瓦片文件名请求相应数据,再加入缓存技术,缩放拖动速度都很快。
Openlayer
OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问。
map:代表一个地图实体,是最上层结构
layer:图层,是map的子元素。可以有多个图层,比如道路图层,边界线图层,信息点图层,叠加在一起成一个地图。
feature:要素,可以理解为数据库一条记录,一个地物信息。是layer子元素。
ArcGIS for Android
Arcgis中的图层有许多,下面是图层的关系表。主要的图层有DynamicLayer, FeatureLayer,
GraphicsLayer, GroupLayer, KmlLayer, RasterLayer, TiledLayer。
1.GraphicLayer,图形图层,只有一个子类ArcGISFeatureLayer。用户通过这个图层可以在MapView
中自形绘制要素,通过样式与色彩绘制点、线、面。
2.TiledLayer,切片图层(瓦片图层),子类有ArcGISLocalTiledLayer, TiledServiceLayer。
ArcGISLocalTiledLayer可以加载本地的tpk文件与切片图层,通过其子类ArcGISTiledMapService
Layer 加载网络的切片图层。
下面的主要来介绍一下Arcgis的主要图层。
1.GraphicLayer,图形图层,只有一个子类ArcGISFeatureLayer。用户通过这个图层可以在MapView中
自形绘制要素,通过样式与色彩绘制点、线、面。
2.TiledLayer,切片图层(瓦片图层),子类有ArcGISLocalTiledLayer, TiledServiceLayer。
ArcGISLocalTiledLayer可以加载本地的tpk文件与切片图层,通过其子类ArcGISTiledMapService
Layer加载网络的切片图层。
- ArcGISLocalTiledLayer local = new ArcGISLocalTiledLayer("/sdcard/<CacheName>/Layers");
- ArcGISLocalTiledLayer local = new ArcGISLocalTiledLayer("/sdcard/<CacheName>.tpk");
3.FeatureLayer,要素图层,没有子类,可加载本地shp文件。通过要素的特性,快速查询具体的要素信息
快速加载。
4.DynamicLayer,动态图层。主要有子类ArcGISDynamicMapServiceLayer, ArcGISImageService
Layer, WMSLayer。前面两个用来加载网络动态图层与网络图像图层。
备注:主要是学习相关连接 http://www.cnblogs.com/arxive/p/7751847.html