百度API实例——google地图数据转化为百度地图数据
来源:互联网 发布:java实现登陆注册 编辑:程序博客网 时间:2024/05/18 20:31
前段时间做的项目前端都是用Google地图,最近在一个地方需要用到百度地图,因为不同地图都有自己的处理,同一个经纬度在不同地图上显示的位置并不相同,因此,要把以前的数据直接拿过来用需要做一个转换。查阅百度地图的js API之后发现有直接从google到baidu的转换api,不错啊,于是自己做了两个实例来记录一下,以后再用到也可以看看。
首先,转换api大致有两种,一个是单点转换,一个是批量坐标转换(好像一次能转换20个点左右,具体没深入查看),这里写了两个js程序,详见下面两个实例的部分代码:先加上相应的js库,
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.5&ak=3140E164A92ec6884b61b080e7bd973a"></script><script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/changeMore.js"></script>
(1)单点转换
/** * 从数据库中获取到一条路线上100个点的经纬度坐标(google地图下的数据),经过百度地图api转换之后,正常显示在百度地图上。 */var result = new Array();var pointArray = new Array();var num =0;var sum=0;var map;$(document).ready(function(){$("#pref").click(function(){if(top.showRouteMapPageSource=="route"){location.href = "/VehicleManagement/pageController/getRoute";}else{location.href="/VehicleManagement/pageController/addRouteStep4";}});map = new BMap.Map("allmap");map.enableScrollWheelZoom();pointArray=[];result=[];num = 0;//parent.stopIdArray中包含了一条路线上所有点的集合for(var i = 0;i<parent.stopIdArray.length;i++){var point = new BMap.Point(parent.stopLngArray[i],parent.stopLatArray[i]);pointArray.push(point);}sum=pointArray.length;//一条路线上点的总数makeLine(map);});function makeLine() { var gpsPoint=new BMap.Point(pointArray[num].lng, pointArray[num].lat); // google转化为百度经纬度 BMap.Convertor.translate(gpsPoint,2,function (point){result.push(point);var marker = new BMap.Marker(result[num]); //创建markermap.addOverlay(marker);//一个个点转换的过程中记录已转换点的个数num++;if(num==sum){makepoly(); //在最后一次画线}else{makeLine(); //循环坐标转换,并不画线}});}function makepoly(){if(parent.stopIdArray.length%2==0){map.centerAndZoom(result[parent.stopIdArray.length/2], 14);}else{map.centerAndZoom(result[(parent.stopIdArray.length-1)/2], 14);}var polyline = new BMap.Polyline(result, {strokeColor : "blue",strokeWeight : 6,strokeOpacity : 0.5});map.addOverlay(polyline);}
/** * 将一条路线的站点信息显示在地图上 批量转换google到baidu地图 */var result = new Array();var pointArrays = new Array();var num =0;var sum=0;var map;$(document).ready(function(){$("#pref").click(function(){if(top.showRouteMapPageSource=="route"){location.href = "/VehicleManagement/pageController/getRoute";}else{location.href="/VehicleManagement/pageController/addRouteStep4";}});map = new BMap.Map("allmap");map.enableScrollWheelZoom();pointArrays=[];result=[];num = 0;var groupNum = 0;var pointArray = new Array();//parent.stopIdArray中包含了一条路线上所有点的集合,此处将点击分组,20个一组,批量坐标转换,提高效率for(var i = 0;i<parent.stopIdArray.length;i++){if(groupNum<20){var point = new BMap.Point(parent.stopLngArray[i],parent.stopLatArray[i]);pointArray.push(point);//分成20个一组groupNum++;}else{sum++;pointArrays.push(pointArray);// 一个小组作为一个元素加入pointArrays,并将容器置空groupNum=0;pointArray=[];}}if(groupNum!=0){sum++;pointArrays.push(pointArray);//最后一组可能不足20个}count();//循环纠偏,并显示到地图上});//分组转换,每一组转换后的数据都加入到result中function count() { var gpsPoints=pointArrays[num]; // google转化为百度经纬度(参数2,表示是从GCJ-02坐标到百度坐标。参数0,表示是从GPS到百度坐标) BMap.Convertor.transMore(gpsPoints,2,callback);}callback= function (points){var xyResult = null; for(var index in points){ xyResult = points[index]; if(xyResult.error != 0){continue;}//出错就直接返回; var point = new BMap.Point(xyResult.x, xyResult.y); result.push(point); }num++;//表示一组//alert(num);if(num==sum){ //最后的时候执行一次makepoly();}else{count(); //循环坐标转换,批量}}function makepoly(){//alert(result.length);//图标for(var i=0;i<result.length;i++){var marker = new BMap.Marker(result[i]); //创建markermap.addOverlay(marker);}//地图居中,放大级别,不设置会出问题的。。if(parent.stopIdArray.length%2==0){map.centerAndZoom(result[parent.stopIdArray.length/2], 14);}else{map.centerAndZoom(result[(parent.stopIdArray.length-1)/2], 14);}//画线var polyline = new BMap.Polyline(result, {strokeColor : "blue",strokeWeight : 6,strokeOpacity : 0.5});map.addOverlay(polyline);}
1 1
- 百度API实例——google地图数据转化为百度地图数据
- 百度地图API实例
- 百度地图离线API及地图数据下载工具-尝鲜篇
- 百度地图离线API及地图数据下载工具-尝鲜篇
- 百度地图api实例练习
- 百度地图API 应用实例
- 调用百度地图API实例
- 百度地图API 应用实例
- 百度地图api实例练习
- 百度地图API调用实例
- 百度地图api实例练习
- 百度地图api实例练习
- 百度地图API简单实例
- 百度地图之定位数据
- 百度地图API+ArcGIS软件—城市出行时空数据可视化
- google与百度地图api体验笔记
- IOS 使用百度地图api 获取gps定位数据
- IOS 使用百度地图api 获取gps定位数据
- 堆排序算法
- 【安卓笔记】安卓开发进阶目标
- 计算机软件编程学习
- Xcode 静态代码分析
- 大雪啊
- 百度API实例——google地图数据转化为百度地图数据
- C++回顾之引用
- UI控件的位置操作
- Python系列视频教程: Django【13讲】第12讲 数据展示
- 大发光火前提是空间党和国家是个好萨格拉斯的看得开
- [Hnoi2013]比赛
- Xdebug 2中文手册翻译CHM版
- 利用VB2005制作颜色渐变的进度条
- 应用ExcelPackage导出Excel