Mapbar基本算法
因为我当初是用在PHP下的,所以用了php表示算法,基本差不多,应该看得懂:
基础网址:"http://img.mapbar.com/maplite/mapbank/baidu/"
每层地图切片存放在文件夹名称:
$levelstr=array("W","0","1","2","3","4","5","6","7","8","9","10","11","12","15");
即第0层地图切片放在"http://img.mapbar.com/maplite/mapbank/baidu/W/" 下
每层地图切片所跨的经度数(纬度跨度需要*0.8这个系数):
$clipnum=array(90,40,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01,0.005,0.002);
如第1层的每切片跨经度是90度,跨纬度是90*0.8=72度。即如经度-180~180,共360度,东西半球各需要180/90=2块切
片,mapbar的每切片像素为300x300,所以完整地图长度像素应是300*4=1200像素。纬度是-90~90,共180度,南北半球各需要
90/72=1.25,需要取大于此数的最小整数即2,所以南北半球加起来仍需要4块,而不是180/72=2.5取整后的3块。从中间0度赤道向两边平
铺的,因此上下两块各有3/4块区域留有空白。
哈哈,有点缺乏耐心啦,将就着结合一小段程序来理解吧
//每层的最大横向像素数(除以2得到是纵向最大像素)
function MaxPixel($zoom){
return 256*pow(2,$zoom+2);
}
//经度换算
function PixelToLng($x,$zoom){
$c= MaxPixel($zoom);
return ($x - $c / 2) / ($c / 360);
}
function LngToPixel($lng,$zoom){
$c= MaxPixel($zoom);
return (int)($c / 2 + $lng * $c / 360 + 0.5);
}
//纬度换算
function PixelToLat($y,$zoom){
$c= MaxPixel($zoom);
$g = ($y - $c / 2) / (-$c / (2 * M_PI));
return (2 * Atan(Exp($g)) - M_PI / 2) / (M_PI / 180);
}
function LatToPixel($lat,$zoom){
$c= MaxPixel($zoom);
$f = Sin($lat * (M_PI / 180));
return (int)($c / 2 + 0.5 * Log((1 + $f) / (1 - $f)) * -$c / (2 * M_PI) + 0.5);
}
$blocksize=array(10,10,10,10,10,10,10,10,10,10,50,50,50,50,50);
//$para['ClipXNo']是横向切片序号,注意这个序号不是从0开始的
//横向切片序号运算公式,已知经度是$para['x1']计算所在切片序号:$para['ClipXNo']=floor($para['x1']/$clipnum[$level]);
//纵向切片序号运算公司,已知纬度是$para['y1']计算所在切片序号:$para['ClipYNo']=floor($para['y1']/($clipnum[$level]*0.8));
//所以倒如第一层第一块切片(经纬度分别为-180,90所在的切片)的序号是$para['ClipXNo']=floor(-180/90)=-2;$para['ClipYNo']=floor(90/72)=2;
$para['FolderXNo']=(int)floor($para['ClipXNo']/$blocksize[$level]);//切片分文件夹存放位置
$para['FolderYNo']=(int)floor($para['ClipYNo']/$blocksize[$level]);
if($para['FolderXNo']<0){
$para['FolderXNo']++;
}
if($para['FolderYNo']<0){
$para['FolderYNo']++;
}
//计算文件序号
$para['FileXNo']=$para['ClipXNo']-$para['FolderXNo']*$blocksize[$level];
$para['FileYNo']=$para['ClipYNo']-$para['FolderYNo']*$blocksize[$level];
//计算出完整切片位置
$para['url']="http://img.mapbar.com/maplite/mapbank/baidu/".$levelstr[$level]."/".$para['FolderXNo']."_".$para['FolderYNo']."/".$para['FileXNo']."_".$para['FileYNo'].".png";
分享到:
相关推荐
Mapbar API则是Mapbar公司提供的一种地理信息系统(GIS)服务接口,它允许开发者通过JavaScript将地图功能集成到自己的网页应用中,实现地图展示、定位、路径规划等多样化功能。 一、JavaScript与Mapbar API基础 1...
- **自定义覆盖物**:除了默认的标记和线,还可以创建自定义覆盖物,例如自定义形状、图片等。 - **地图控件**:添加缩放、平移、全屏等地图控件,增强用户体验。 在实际开发过程中,开发者需要对JavaScript和Web...
"Mapbar地图编辑器"是一款专为程序员设计的高效地图集成工具,深受用户喜爱。它提供了丰富的地图数据处理和展示功能,使得在编程过程中集成地图功能变得更加便捷。这款软件主要适用于Web开发,尤其是那些需要在应用...
可以通过该文档可以快速的了解flash,并对flash的组件API和地图PAI进行快速了解
标题“mapbar标注的一个例子”指的是使用Mapbar地图服务进行地图标注的应用实例。Mapbar是一家提供地图API和服务的公司,其地图服务广泛应用于导航、位置查找、地理信息展示等领域。在这个例子中,我们将探讨如何在...
MapBar API 使用简略说明(上) MapBar是一款知名的在线地图服务提供商,为开发者提供了丰富的API接口,使得我们可以轻松地在自己的应用或者网站中集成地图功能。本文将对MapBar API的基本使用进行简略说明,主要...
mapbarapi.js控制地图显示格式的js文件,通过简单程序调用这个js文件,可以按照格式显示自己想要的格式
标题中的“mapbar推出的一款客户端地图软件”指的是一款由Mapbar公司开发的适用于个人计算机的地图应用程序。Mapbar,也称为图吧,是中国知名的在线地图服务提供商,它为用户提供地图查询、导航、位置服务等功能。这...
### Mapbar图吧地图公司介绍 #### 公司概况 Mapbar图吧是一家成立于2004年的高科技公司,专注于地图服务和位置服务的研发与运营。公司拥有强大的研发团队,员工总数达到340人,其中硕士及以上学历的员工有44人,...
google地图 //api说明 ...//类参考文档 ... 51地图 //api说明 ...mapBar //api说明 http://union.mapbar.com/apidoc/index.jsp?dtype=9 //类参考文档 http://union.mapbar.com/apidoc/index.jsp?dtype=3
mapbar(图吧)是地图方面的一个半开源工具。这个是使用它的api
"Mapbar接口的实现"是一个涉及地图服务集成的技术主题,主要在Web开发中使用,用于在网站上嵌入地图功能。Mapbar是中国一家提供地图服务的公司,它提供了API和JavaScript库供开发者调用,以在自己的应用或网站中集成...
MAPbar 百度例子 不错的好例子!可以看看
通过平台开放和资源置换,Mapbar建立了业内最大的更新及时了的地图信息(POI)数据库和公交线路数据库,充分满足用户各类生活信息的查询和线路查询。Mapbar目前在全国范围内拥有500多家代理商,负责数据的维护和地图...
mapBar百度地图的开源JavaScript源码
图吧地图API,欢迎下载使用.让你轻松了解接口让你轻松了解接口
标题中的“图吧地图更新 套件 mapbar java”表明这是一个关于图吧地图更新的软件包,其中可能包含了用于更新图吧地图的Java应用程序。图吧(MapBar)是一家提供地图服务的公司,他们的产品通常包括地图数据、导航...
收藏Mapbar Device
### 知识点:JavaScript结合MapBar实现地图定位功能 #### 1. MapBar地图定位基础 MapBar提供了丰富的API接口,使得开发者能够使用JavaScript技术将MapBar地图服务嵌入到自己的网站中。通过这些API,开发者能够实现...
因此,MapBar使用了一种加密算法来处理坐标数据,使得在不掌握特定密钥的情况下,外界难以还原出真实的地理位置。 代码中定义了一个常量`strLicenseKey`,它在加密和解密过程中起到关键作用。在这个例子中,它的值...