地图控件编写总结

本文章主要关于地图控件的编写操作。

通过一个最简单的地图控件,让大家了解关于地图服务的一些内容,程序逻辑是很简单的。采用了部分Gmap控件的代码、

带式Gmap控件太大太复杂,不容易让人理解程序的结构。


1首先了解google地图url

http://mt2.google.cn/vt/lyrs=m@167000000&hl=zh-CN&gl=cn&x=0&y=0&z=0

x代表纬度瓦片编号,y代表经度瓦片编号,z代表缩放等级[0-22]

一幅地图由4^z个256的正方形组成,z为级别

例如:第0级为4^0个,即世界地图由一个256图片表示。


第1级为4^1个,即世界地图由4个256图片表示。

编号x=0,y=0 编号x=0,y=1

 

x=1,y=0 x=1,y=1

 

2 Gps点坐标转化为地图上的像素坐标

lat代表经度,lng代表纬度,以像素图片左上角为(0,0),gps点对应的横纵坐标为(x,y)

像素空间宽度和高度都为L=(2^n)*256;

x=(lng+180)*360*L

double sinLatitude = Math.Sin(lat * Math.PI / 180);
 y = (0.5 - Math.Log((1 + sinLatitude) / (1 - sinLatitude)) / (4 * Math.PI))*L;

具体是如何计算的,可以查看

点击打开链接

3地图像素到GPS点位置。

是第2步的逆函数。


4,具体计算

知道gps_center经纬度,lat,lng  转化为 像素坐标 Point_center。

显示范围也就可以确定左上角[Point_center.x-  halfWidth,Point_center.y-  halfHeight]到右下角[Point_center.y+  halfWidth,Point_center.y+  halfHeigh]

确定左上角起始瓦片编号,上面数/256。右下角瓦片编号,像素点/256。

然后进行异步下载。

下载之后,根据瓦片编号进行绘制,和左上角瓦片和当前显示的距离,结合绘制。


具体的详细实现,在

http://download.csdn.net/detail/moonandwolf/8491069进行下载





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值