之前一直想使用HTML5技术全新做一套地图API,可是苦于时间和精力,迟迟未有行动。后来下定决心,利用下班和周末做出一个大体框架出来,现在和网友分享一下自己的整体的一个思路和想法。欢迎大家提出宝贵建议,希望把这套API做的更好,有人真正利用起来。DEMO访问地址,猛击这里

数据

我们看到的电子地图是多个图层叠加之后的效果,每一个图层都至少对应着一个地图服务。我们这样可以理解服务,我们把简单的参数传给后台,后台会把原始数据返回来,前端或者应用就可以根据自己需要,渲染成图。

这里返回的数据,不仅仅是矢量数据,也包括栅格数据。

矢量数据,包括那些点线面的具体坐标、投影或者坐标系。矢量数据使用场景:数据经常更新,需要知道数据属性或坐标。

栅格数据,提前生成好的图片或者动态生成的图片。栅格数据使用场景:底图,计算量较大的渲染图。

一般来说,一个地图,最下面是一个底图,然后在上面叠加一些矢量数据和栅格数据。底图主要是为了在当前比例尺下显示大概地形要素。底图变动周期比较长,数据量比较大,不适合使用矢量数据加载。现在通用的做法,将地图分割成一个个的小图片,然后等到使用的时候拼接起来。我们可以想象一下,之前的屋顶上面的瓦,是怎么一个形态?是不是一个一个拼接成的,然后形成屋顶的,没有谁家的瓦,是一个整体吧。这样做的好处主要有这么几个:

1:可以动态拼接某一范围的底图。

2:可以局部更新瓦片。

坐标系

坐标系分为投影坐标系和地理坐标系,不多说这个了,因为关于这方面的知识实在是太多了,我对这个不是太擅长,只是说一下常见的就可以了。

地理坐标系,是以经纬度为地图的存储单位的。

投影坐标系参数当中都会包括一个地理坐标系,实质上是一个平面坐标系统,单位通常是米。

WGS84,是为GPS全球定位系统使用而站立的坐标系统,属于地理坐标系。GPS采集到的数据,都是基于WGS84。中国现在使用较多的是西安80或者北京2000,这就需要一个转换过程,不过具体参数是保密,现在转换的工具或者公式,转换都会存在误差的,也就会经常看到一些数据叠加发生了偏移错位(当然不仅仅是因为这一个原因,国内的数据发布到网络上面,都要求做偏移处理的)。WGS84东西方向范围[-180,180],南北方向范围[-90,90]。由于坐标系和投影实在是太多而且名字加参数太长,不容易记,所以就给每一种坐标系定义了一个或多个序列号,WGS84他的wkid是4326。

Web Mercator属于投影坐标系,这是一个正轴等角投影,投影出来之后呈现给我们的是一个正方形。我们都知道地球是一个椭球形,这样肯定会有误差,在大比例尺下面,就可以忽略这个误差了。不过话说回来,无论使用哪一种坐标系都会有误差的。等角投影,保证了对象形状不变,而且也保证了方向和位置的相对性性。这就是在众多的投影当中,我们为什么会选中它的原因(当然不是我选择的,基本上互联网公司底图都是使用这种投影)。三个wkid代表它3857、102100、102133,用的最多的还是102100。东西和南北方向范围都是[-20037508.3427892,20037508.3427892]

下面一节是主要是讲述以谷歌和微软Bing Maps为例,探讨瓦片是如何计算的。

使用HTML5 canvas做地图(1)基础知识的更多相关文章

  1. 使用HTML5 canvas做地图(3)图片加载平移放大缩小

    终于开始可以写代码了,手都开始痒了.这里的代码仅仅是在chrome检测过,我可以肯定的是IE10以下浏览器是行不通,我一直在考虑,是不是使用IE禁止看我的篇博客,就是这群使用IE的人,给我加了很多工作 ...

  2. 使用HTML5 canvas做地图(2)瓦片以及如何计算的

    上一篇也说到瓦片,我们为什么使用瓦片?这一篇主要是关于如何拼接地图? 下面的一张图,可以一眼明了,地图是如何切割以及拼接的. 瓦片信息 瓦片信息包括切图原点,瓦片大小,格式,分辨率以及分辨率级别等. ...

  3. html5 canvas做的图表插件

    用highchart的时候发现它是用svg来画图的,那么用canvas来做怎么样的. 以前做AS图表插件的时候,绘制图画主要用容器的Graphics对象来绘制,而canvas的context和Grap ...

  4. 用HTML5 Canvas 做擦除及扩散效果

    2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...

  5. Canvas和SVG的基础知识,以及两者的区别(小白)

    首先我们来说一下Canvas是什么,它有什么作用以及它的知识点. Canvas是<HTML5>的新标签,它通常用于通过脚本(也就是JavaScript)来绘制图像.但是它本身并没有绘制能力 ...

  6. 【Bugly干货分享】一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎

    Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言 好吧,说是“粒子引擎”还是大言不 ...

  7. 一起用HTML5 canvas做一个简单又骚气的粒子引擎

    前言 好吧,说是"粒子引擎"还是大言不惭而标题党了,离真正的粒子引擎还有点远.废话少说,先看demo 本文将教会你做一个简单的canvas粒子制造器(下称引擎). 世界观 这个简单 ...

  8. 用HTML5 Canvas做一个画图板

    使用HTML5可以非常简单地在canvas上实现画图应用,用支持html5的浏览器便可在下面的区域进行绘画,要看到演示效果,请确保你的浏览器支持HTML5: 功能很简单,原理其实和拖放是类似的,主要是 ...

  9. 用HTML5 CANVAS做自定义路径的动态效果图片!

    最近对HTML5开始感兴趣了,实现的效果如下图,大家可以从代码里换掉图片 我用的是canvas里面的2d绘图,其中上图的路径是网上在线绘制的,我太懒了,哈哈 下面是网址: http://www.vic ...

随机推荐

  1. hadoop-2.3.0-cdh5.1.0完全分布式集群配置及HA配置(待)

    一.安装前准备: 操作系统:CentOS 6.5 64位操作系统 环境:jdk1.7.0_45以上,本次采用jdk-7u55-linux-x64.tar.gz master01 10.10.2.57  ...

  2. ssh动态转发小记

    ssh,一般常用来做远程登录管理,也就是连上远程机器,得到一个shell,然后交互式地在上面敲命令-看结果-再敲命令. 偶尔也会用在脚本里,做些自动化批处理上传下载的操作,但本质上也是用shell来执 ...

  3. 教育网bt站点

    北京交通大学 晨光BT (http://cgbt.cn)清华晨光BT(http://thubt.cn)北京科技大学 iBeiKeBT(http://bt.ibeike.com)上海大学 乐乎BT (h ...

  4. 【转】如何配置EditPlus中Java运行环境,运行Java程序

    如何配置EditPlus中Java运行环境,运行Java程序 http://jingyan.baidu.com/article/86112f13725e2e2736978711.html 分步阅读 E ...

  5. 使用JSP输出九九乘法表

    在html网页中编写Java代码是,需要使用<%%>来编写,<%=%>表示取等号后面的值,如<%="hello"%>就会输出hello. < ...

  6. Citrix 虚拟化 最小化后无法最大化

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\wfshell\TWI\创建DWORD类型键值:SeamlessFlags    ...

  7. JsonParse类

    using System.Data; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; using Syst ...

  8. 目标检测的图像特征提取之_LBP特征

    LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子:它具有旋转不变性和灰度不变性等显著的优点.它是首先由T. Ojala, M.Pietikäinen ...

  9. yarn快速使用及实践建议

    什么是 yarn? 简单来说,yarn 是一个与 npm 功能相同的工具,用于前端项目的依赖管理.在使用 npm 的项目中,使用 npm 命令的地方都可以使用 yran 来代替. 为什么要使用 yar ...

  10. CodeForces 124C【连通块】

    思路: a素数->b合数 c素数->b合数 a,c属于一类 so,预处理相同的,并且计数.1000怎么搞都无压力: 我这里也预处理了字母个数,从集合大的枚举下来,每次拿字母个数最多的去匹配 ...