制作自己的电子地图 flash版

电子地图一般可以使用Baidu api,优点功能强大,但缺点是需要连接官方服务器,且难以定制自己的内容.

1选择开发语言as3

2地图投影

为了电子地图影像无缝拼接起来,整个地球必须使用一个投影.一般选择墨卡托投影(Mercator projection),下图:

在墨卡托投影下,比例和面积明显扭曲了 (特别是在两极附近的地区).

为了简化计算,我们使用球面投影的形式,而不是椭圆形的形式。由于投影是仅用于地图显示,而不是显示数字坐标,我们不需要额外的椭圆投影的精度。使用球面投影的原因大约有0.33%规模扭曲在Y轴方向,视觉上不明显

地面分辨率和地图比例尺

除了投影, 渲染地图还需要地面分辨率或地图比例尺。最低水平的缩放级别(1级),地图是512 x 512像素。在每个连续的缩放级别,地图宽度和高度增长的因素2:缩放级别  2级是1024 x 1024像素,三级为2048 x 2048像素,4级是4096 x 4096像素,等等。一般来说,地图的宽度和高度(以像素为单位)可以计算为:

地图宽度=地图高度= 256 * 2水平像素

地面分辨率:地图上一个像素表示的地面距离。例如,在地面分辨率10米/像素,每个像素代表一个地面10米的距离。地面分辨率取决于缩放级别和它的纬度。使用一个地球半径6378137米,地面分辨率(米/像素)可以计算为:

地面分辨率= cos(纬度* pi / 180)*地球周长/地图宽度

=(cos(纬度* pi / 180)* 2 * pi * 6378137米)/(256 * 2水平像素)

地图比例尺:在相同的单位下,地图距离和地面距离之间的比率。例如,地图比例尺为1:100000,地图上的每一英寸代表一个地面100000英寸的距离。类似地面分辨率,地图比例尺取决于纬度和缩放级别,它可以通过地面分辨率计算出来,比如给点每英寸的屏幕分辨率,通常96 dpi:

地图比例尺= 1:地面分辨率*屏幕dpi / 0.0254米/英寸

= 1:(cos(纬度* pi / 180)* 2 * pi * 6378137 *屏幕dpi)/(256 * 2 * 0.0254)

下表列出每个缩放级别(在赤道来衡量)。(注意,地面分辨率和地图比例尺也取决于纬度,上述方程所示,但不包括下表所示。)


缩放级别


地图宽度和高度(象素)


地面分辨率 (米 / 象素)


地图比例尺(96 dpi)


1


512


78,271.5170


1 : 295,829,355.45


2


1,024


39,135.7585


1 : 147,914,677.73


3


2,048


19,567.8792


1 : 73,957,338.86


4


4,096


9,783.9396


1 : 36,978,669.43


5


8,192


4,891.9698


1 : 18,489,334.72


6


16,384


2,445.9849


1 : 9,244,667.36


7


32,768


1,222.9925


1 : 4,622,333.68


8


65,536


611.4962


1 : 2,311,166.84


9


131,072


305.7481


1 : 1,155,583.42


10


262,144


152.8741


1 : 577,791.71


11


524,288


76.4370


1 : 288,895.85


12


1,048,576


38.2185


1 : 144,447.93


13


2,097,152


19.1093


1 : 72,223.96


14


4,194,304


9.5546


1 : 36,111.98


15


8,388,608


4.7773


1 : 18,055.99


16


16,777,216


2.3887


1 : 9,028.00


17


33,554,432


1.1943


1 : 4,514.00


18


67,108,864


0.5972


1 : 2,257.00


19


134,217,728


0.2986


1 : 1,128.50


20


268,435,456


0.1493


1 : 564.25


21


536,870,912


0.0746


1 : 282.12


22


1,073,741,824


0.0373


1 : 141.06


23


2,147,483,648


0.0187


1 : 70.53

像素坐标

已经在每个缩放级别的细节有了投影和比例尺,我们可以将地理坐标转换成像素坐标。由于地图宽度和高度是在不同的缩放级别,像素坐标也是如此。像素在地图的左上角像素坐标总是 (0,0)。像素在地图右下角的像素坐标是(width-1 height-1),或在前面的小节方程(256 * 2level–1, 256 * 2level–1)。例如,在3级,像素坐标范围从(0,0)到(2047、2047),如下:

有了经度,纬度和缩放级别,像素XY坐标可以如下计算:

sinLatitude = sin(latitude * pi/180)

pixelX = ((longitude + 180) / 360) * 256 * 2 level

pixelY = (0.5 – log((1 + sinLatitude) / (1 – sinLatitude)) / (4 * pi)) * 256 * 2 level

纬度和经度使用WGS 84坐标系。虽然地图使用球面投影,重要的是将所有的地理坐标转换成一个共同的坐标系,都转成WGS 84坐标系。假设经度范围从-180 到 180度,纬度范围必须裁剪,从-85.05112878到85.05112878。 这避免了在两极出现异常,使投影地图为矩形。

Tile坐标和Quadkeys

为优化地图的检索和显示性能,地图每Tile被分割成256 x 256像素的块。像素的数量在每个缩放级别下都不同,瓷砖的数量:

地图宽度=地图高度= 2 level tiles

每个Tile的XY坐标系范围从左上角(0,0),到右下角(2level–1, 2level–1)。例如,在第三级的Tile坐标范围从(0,0)到(7,7)如下:

给出一对像素XY坐标,可以很容易地确定TileY坐标:

tileX = floor(pixelX / 256)

tileY = floor(pixelY / 256)

为了优化Tiles的索引和存储, 组合二维TileXY坐标系进入一维的字符串被称为四叉树Key,或简称为“quadkeys”。在每个缩放级别,每个quadkey唯一标识一个tile。给定一个在缩放级别为3级的TileXY坐标系(3,5),quadkey确定如下:

tileX = 3 = 011 2

tileY = 5 = 101 2

quadkey = 100111 2 = 213 4 = " 213 "

3,下载地图数据

测试数据可从google地图下载。

4、显示结果如下

5,应用显示GPS坐标

导入地名坐标数据入库,建webservice,查询结果如下

6,应用,地形图划分,浏览。

时间: 2024-10-07 03:54:35

制作自己的电子地图 flash版的相关文章

用wix制作属于自己的Flash网站

Wix 制作属于自己的Flash网站 Wix 是一款新兴的在线应用程序,它可以帮助用户轻松的创建出绘声绘色的Flash网站,而不需要任何相关的专业知识.Wix 是一家位于以色列的Startup开发的一款在线应用程序,它可以帮助那些没有任何相关专业知识的同学们实现在线架构Flash网站的梦想.也许你体验过 Synthasite, Weebly, Jimdo 以及 Google Page Creator 等类似的在线网页制作利器,但你绝对没有梦想过有一天你也可以像那些大师级别的人们一样制作一个完全基

老毛桃U盘启动盘制作工具V20140501完美贡献版

老毛桃U盘启动盘制作工具V20140501完美贡献版 下载地址:http://down.laomaotao.net:90/LaoMaoTao_V2014zhuangji.exe 老毛桃U盘装系统综合教程 新手必看:系统文件一般有二种格式:ISO格式和GHO格式.ISO格式又分为原版系统和GHOST封装系统二种.只要用解压软件WinRAR解压后有大于600M(WIN7一般2G)以上的GHO文件的,是GHOST封装系统,PE里的老毛桃智能装机PE版软件可以直接支持还原安装.如果解压后没有大于600M

用js制作163登陆页面终极版(写了一晚上)

用js制作163登陆页面终极版(写了一晚上),有些功能还不太完善,有兴趣的可以去自己再实现一些功能,基本上所有的功能我都实现了,只有少数的没有实现,里面还有一些正则表达式的运用,主要还是用表格设计的,没有用div,下次上传div的. 下面看HTML代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>mischen

U盘 制作 win 7 64bit 旗舰版 安装盘

使用 软碟通  试用版的即可  打开 iso文件 ->写入磁盘映像 ->选择要做的U盘 ->done 这个过程非常简单 百度里有很多 网站都是这个方法 要制作 U盘 还有个工具 叫做  Windows7-USB-DVD-tool  这个可以制作 win7  win 2012 server的安装盘 我已经用过了   安装上就可以用

教大家制作iPhone手机铃声(Mac版)

废话不多说 直接正文(代码写多了,标点随意,不要在意-0-) 首先,iphone的铃声不能直接用MP3格式的,必须是m4r格式.如图: 然后我们就开始制作了.首先你需要的工具就是下载好的音乐文件,和iTunes. 第一步 直接双击你的音乐文件 他会开始播放 并出现在你的iTunes音乐列表中. 第二步,看图: 需要注意的几点:1.iPhone手机铃声必须是时长40秒之内才会被同步到你的手机上,所以我们要把音乐的时间调成<=40(我试过先创建AAC文件再调时间,貌似不行,所以我们先把时间调出来);

多文件上传插件Stream,是Uploadify的Flash版和Html5版的结合,带进度条,并支持html5断点续传(附件上传),拖拽等功能

是根据某网的文件上传插件加工而来,支持不同平台(Windows, Linux, Mac, Android, iOS)下,主流浏览器(IE7+, Chrome, Firefox, Safari, 其他)的上传工作,当然在Html5标准下,还支持文件的断点续传功能,有效解决大文件的Web上传问题! 主要特征 1. 支持HTML5.Flash两种方式(跨域)上传 2. 多文件一起上传 3. HTML5支持断点续传,拖拽等新特性 4. 兼容性好IE7+, FF3.6+, Chrome*,Safari4+

Unity3D中使用BMFont制作图片字体 (NGUI版)

[旧博客转移 - 发布于2015年9月10日 16:07] 有时美术会出这种图片格式的文字,NGUI提供了UIFont来支持BMFont导出的图片字体 BMFont原理其实很简单,首先会把文字小图拼成一张大图(合成一张图上传GPU性能会高一些) 然后生成一份配置,描述了每张小图字符的Unicode编码(这里是10进制),坐标,宽高,偏移量,等等信息 下面说一下制作步骤 BMFont安装:http://pan.baidu.com/s/1jGvTAzc 打开BMFont 选择:Edit/Open I

从零开始学习制作H5应用——V3.0版,loading,背景音乐及自动切换

我们的第一个H5应用经过V1.0与V2.0的制作,已经越来越惊艳了,这一次,我们继续来给她梳妆打扮,让她更漂亮. 任务 1.加入页面加载完成前的loading动画,提升用户体验: 2.加入背景音乐,自动播放,并添加控制图标,可以控制播放与暂停 3.让页面实现自动切换. 实现 第一步:Loading动画 index.html -- <body> <div class='loader loader--spinningDisc'></div> <div id="

【Axure教程】Axure制作转盘抽奖教程-初级版

今天给大家分享,使用axure制作转盘抽奖交互原型.不带登录流程. 抽奖流程: 一,主要内容:1,主要元件:动态面板 2,重点:旋转交互.随机函数.触发动作. 3,难点:通过停止位置判断抽奖结果 4,涉及函数及解释: target:目标元件 text:元件文本 Math.random():返回0-1之间的一个数字 rotation:元件旋转角度 二,原型准备:主要包含两个页面1,框架页面: 包含手机边框+内联框架,主要用于将内容调入当前页面,展示整体效果. 双击内联框架,选中index(内容)页