百度地图API有两种坐标系,一种是百度经纬度,一种是摩卡托坐标系。在本章你将学会:
创新互联主要从事成都做网站、网站制作、成都外贸网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务江川,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
1、如何相互转换这两种坐标;
2、使用该坐标进行反地址解析;
3、坐标附近全部POI的查询;
4、计算两点间的距离。
最终画面效果图
百度地图API常用两种坐标系,一是球面坐标系,又称百度坐标,即point;第二就是平面坐标系,又称摩卡托坐标,即pixel。
为了方便用户调用,API中的参数大多为百度经纬度,又称球面坐标。而在后台计算时,为了加快运算速度,一般采取摩卡托坐标系,即平面坐标。(有了平面坐标,用户能自己快速而海量地计算两点的距离。)
1、百度经纬度和摩卡托坐标的相互转换
MercatorProjection类,通过MapType的getProjection方法获得实例。类参考:
百度经纬度转换为摩卡托(worldCoordinate.x和worldCoordinate.y就是平面坐标的x和y)
varprojection1 = map.getMapType().getProjection();
varworldCoordinate = projection1.lngLatToPoint(pt);
摩卡托转换为百度经纬度(LngLat.lng和LngLat.lat就是经纬度)
- varprojection2 = map.getMapType().getProjection();
- varLngLat = projection2.pointToLngLat(mctXY);
2、使用坐标进行反地址解析
由于百度地图API只支持百度经纬度的反地址解析,所以,必须先将摩卡托坐标转换为百度经纬度,再使用如下方法。
- vargc = newBMap.Geocoder();
- gc.getLocation(point, function(rs){
- varaddComp = rs.addressComponents;
- alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);
- });
- });
反地址解析可以返回如下数据:
3、坐标附近全部POI的查询
详细教程请参照文章《【百度地图API】如何用圆形搜索获取中心点周围100米内全部关键点?如天安门附近所有的餐厅、加油站、宾馆、大厦等》:http://www.cnblogs.com/milkmap/archive/2011/09/16/2178907.html
4、计算两点间距离的三种方法
通过本章介绍的经纬度转换的工具,我们得到如下的一组数据。
起点:
摩卡托坐标x:12057394.71
摩卡托坐标y:2589680.88
经纬度lng: 108.312241
经纬度lat: 22.787823
终点:
摩卡托坐标x:12058626.7
摩卡托坐标y:2592552.85
经纬度lng: 108.323308
经纬度lat: 22.811744
(A) 通过百度地图API调用(这里只能使用百度经纬度),map.getDistance(pointA,pointB),可以得到距离为:
alert(map.getDistance(newBMap.Point(108.312241,22.787823),newBMap.Point(108.323308,22.811744)));
(B) 自己利用球面坐标计算两点距离的方法:
设地球半径为R,地心为0,球面上两点A、B的球面坐标为A(α1,β1),B(α2,β2),α1、α2∈[-π,π],β1、β2∈[-π/2,π/2 ],
AB =R·arccos[cosβ1cosβ2cos(α1-α2)+sinβ1sinβ2]
利用勾股定理与正弦定理则可求出AB两点间的直线距离,在利用正弦定理可求出AB两点与地球0点夹角的度数,再利用如下公式:角EOD的度数/360度=E与D之间的球面距离/大圆周长,则可求出AB的球面距离。
(C) 自己利用平面坐标系计算两点距离的方法:(可以自己后台运算)
由百度经纬度得到摩卡托坐标后,能轻松计算出X和Y的值。***用勾股定理求得Z。
alert(Math.sqrt(Math.pow((12057394.71 - 12058626.7),2) + Math.pow((2589680.88 - 2592552.85),2)));
全部源代码:
摩卡托坐标的反地址解析 摩卡托坐标x:
摩卡托坐标y:
原文链接:http://www.cnblogs.com/milkmap/archive/2012/01/31/2333875.html
【编辑推荐】
新闻标题:百度地图API中如何用好摩卡托坐标
分享路径:http://www.gawzjz.com/qtweb2/news26/15476.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联