使用HTML5 canvas做地图(1)基础知识
之前一直想使用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)基础知识的更多相关文章
- 使用HTML5 canvas做地图(3)图片加载平移放大缩小
终于开始可以写代码了,手都开始痒了.这里的代码仅仅是在chrome检测过,我可以肯定的是IE10以下浏览器是行不通,我一直在考虑,是不是使用IE禁止看我的篇博客,就是这群使用IE的人,给我加了很多工作 ...
- 使用HTML5 canvas做地图(2)瓦片以及如何计算的
上一篇也说到瓦片,我们为什么使用瓦片?这一篇主要是关于如何拼接地图? 下面的一张图,可以一眼明了,地图是如何切割以及拼接的. 瓦片信息 瓦片信息包括切图原点,瓦片大小,格式,分辨率以及分辨率级别等. ...
- html5 canvas做的图表插件
用highchart的时候发现它是用svg来画图的,那么用canvas来做怎么样的. 以前做AS图表插件的时候,绘制图画主要用容器的Graphics对象来绘制,而canvas的context和Grap ...
- 用HTML5 Canvas 做擦除及扩散效果
2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...
- Canvas和SVG的基础知识,以及两者的区别(小白)
首先我们来说一下Canvas是什么,它有什么作用以及它的知识点. Canvas是<HTML5>的新标签,它通常用于通过脚本(也就是JavaScript)来绘制图像.但是它本身并没有绘制能力 ...
- 【Bugly干货分享】一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎
Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言 好吧,说是“粒子引擎”还是大言不 ...
- 一起用HTML5 canvas做一个简单又骚气的粒子引擎
前言 好吧,说是"粒子引擎"还是大言不惭而标题党了,离真正的粒子引擎还有点远.废话少说,先看demo 本文将教会你做一个简单的canvas粒子制造器(下称引擎). 世界观 这个简单 ...
- 用HTML5 Canvas做一个画图板
使用HTML5可以非常简单地在canvas上实现画图应用,用支持html5的浏览器便可在下面的区域进行绘画,要看到演示效果,请确保你的浏览器支持HTML5: 功能很简单,原理其实和拖放是类似的,主要是 ...
- 用HTML5 CANVAS做自定义路径的动态效果图片!
最近对HTML5开始感兴趣了,实现的效果如下图,大家可以从代码里换掉图片 我用的是canvas里面的2d绘图,其中上图的路径是网上在线绘制的,我太懒了,哈哈 下面是网址: http://www.vic ...
随机推荐
- SuperSocket使用自定义协议与服务端通信发送实例
AsyncTcpSession tcpSession = new AsyncTcpSession(); public Encoding encoding = Encoding.GetEncoding( ...
- If,for,range混合使用笔记-(VBA视频教程2:使用IF进行逻辑判断)
-- 新建表格:#单元格a1-a100全部等于1的代码 Sub test() Dim i As Integer For i = To Range( Next End Sub -- 新建表格:#单元格a ...
- Python中配置文件解析模块-ConfigParser
Python中有ConfigParser类,可以很方便的从配置文件中读取数据(如DB的配置,路径的配置).配置文件的格式是: []包含的叫section, section 下有option=value ...
- MongoDB的安装避坑(踩坑)
下载 可以去官网下载:https://www.mongodb.com/download-center/community 安装 下载完了就可以使用安装包安装:我下载的mongodb版本是:v4.0.9 ...
- IT兄弟连 JavaWeb教程 jQuery对AJAX的支持经典面试题
1.简述对Ajax的理解 AJAX是Asynchronous JavaScript and Xml异步的JavaScript和Xml.它一种用来改善用户体验的技术其实质是使用XMLHttpReques ...
- web综合案例01
web综合案例01 ... .... 内容待添加
- centos7.2上安装python3和pip19.0.3
安装libressl 下载地址: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.7.4.tar.gz 或者 :https://pan. ...
- linux下find查找与批量替换文件中指定内容
经常在部署tomcat时需要替换配置文件中的ip,find命令批量替换还是很方便的 查找需要替换的ip,看看哪些文件有配置这个ip,执行下面命令: find ./ -type f -regex &qu ...
- Zoj 2314 Reactor Cooling(无源汇有上下界可行流)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 题意: 给n个点,及m根pipe,每根pipe用来流躺液体的,单向 ...
- Collections.copy
List<String> names = Arrays.asList(new String[nameList.size()]); Collections.copy(names, nameL ...