两种方式转换坐标,我使用微信获取的GPS坐标,直接放在百度地图中使用,发现标点的时候会与实际有较大的偏移。
index.html
百度地图坐标变换
index.js
var lng = 106.487744;var lat = 29.569733;var map;$(function(){ map = new BMap.Map("bmapId"); // 创建地图实例 var gpsPoint = new BMap.Point(lng, lat); // 创建点坐标 console.log("gpsPoint:"+gpsPoint.lng+","+gpsPoint.lat); map.centerAndZoom(gpsPoint, 15); // 初始化地图,设置中心点坐标和地图级别 var markergps = new BMap.Marker(gpsPoint); var labelgps = new BMap.Label("我是GPS标注哦",{offset:new BMap.Size(20,-10)}); markergps.setLabel(labelgps); //添加GPS标注 map.addOverlay(markergps); //坐标转换完之后的回调函数 translateCallback = function (point){ var marker = new BMap.Marker(point); map.addOverlay(marker); var label = new BMap.Label("我是百度标注哦",{offset:new BMap.Size(20,-10)}); marker.setLabel(label); //添加百度label map.setCenter(point); console.log("转化为百度坐标为:"+point.lng + "," + point.lat); } // 方式一坐标变换 BMap.Convertor.translate(gpsPoint,0,translateCallback); // 方式二坐标变换 loadPosition(); // 结论:两种变换结果相同,每次都有很小的误差,属于正常现象});function loadPosition(){ // locateAddress 通过GPS的经纬度信息,得到对应的位置 $.ajax({ 'url': 'http://api.map.baidu.com/geoconv/v1/?coords='+lng+','+lat+'&ak=FCGqW9Y44cb9lHiQsYRGzTsD&from=1&to=5&output=json&callback=renderReverse', 'type':'POST', 'dataType':'JSONP', 'jsonp':'jsoncallback', // 自动生成回调函数时的名称 'error':function(e){ // 不处理 }, 'success':function(data){ // 不处理,由下面的回掉函数处理 } });}function renderReverse(data){ console.log(data.result[0].x+','+data.result[0].y); var point = new BMap.Point(data.result[0].x,data.result[0].y); var marker = new BMap.Marker(point); map.addOverlay(marker); var label = new BMap.Label("我是百度2标注哦",{offset:new BMap.Size(20,-10)}); marker.setLabel(label); //添加百度label map.setCenter(point); console.log("转化为百度坐标为:"+point.lng + "," + point.lat);}