1 function setPlace(map,myValue,callback){ 2 function getAddress(){ 3 var pp = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果 4 map.centerAndZoom(pp, 18); 5 var marker = new BMap.Marker(pp);// 创建标注 6 map.addOverlay(marker); // 将标注添加到地图中 7 marker.enableDragging(); // 可拖拽 8 9 10 marker.addEventListener('dragend', function (e) {//拖动标注结束 11 var pointNew = e.point; 12 console.log("使用拖拽获取的百度坐标"+pointNew.lng+","+pointNew.lat); 13 marker.setPosition(pointNew);//设置覆盖物位置 14 //百度转GCJ-02 15 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 16 var x = pointNew.lng - 0.0065; 17 var y = pointNew.lat - 0.006; 18 var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi); 19 var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi); 20 var gg_lng = z * Math.cos(theta); 21 var gg_lat = z * Math.sin(theta); 22 //百度GCJ02转web墨卡托84 23 var earthRad = 6378137.0; 24 pointNew.lng = gg_lng * Math.PI / 180 * earthRad; 25 var a = gg_lat * Math.PI / 180; 26 pointNew.lat = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a))); 27 console.log("使用拖拽获取的百度坐标转换的WebMercator坐标是("+pointNew.lng+","+pointNew.lat+")"); 28 return callback(pointNew); 29 }); 30 31 32 map.addEventListener("click", function(e){ 33 console.log('换位置百度的经度:'+e.point.lng+' , 纬度: '+e.point.lat); 34 var now_point = new BMap.Point(e.point.lng, e.point.lat ); 35 marker.setPosition(now_point);//设置覆盖物位置 36 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 37 var x = now_point.lng - 0.0065; 38 var y = now_point.lat - 0.006; 39 var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi); 40 var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi); 41 var gg_lng = z * Math.cos(theta); 42 var gg_lat = z * Math.sin(theta); 43 //GCJ02转web墨卡托84 44 var earthRad = 6378137.0; 45 now_point.lng = gg_lng * Math.PI / 180 * earthRad; 46 var a = gg_lat * Math.PI / 180; 47 now_point.lat = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a))); 48 console.log("WebMercator坐标是("+now_point.lng+","+now_point.lat+")"); 49 return callback(now_point); 50 }); 51 //百度转墨卡托 52 console.log("使用点击换位置获取的百度坐标百度地图坐标是("+pp.lng+","+pp.lat+")"); 53 //百度转GCJ-02 54 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 55 var x = pp.lng - 0.0065; 56 var y = pp.lat - 0.006; 57 var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi); 58 var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi); 59 var gg_lng = z * Math.cos(theta); 60 var gg_lat = z * Math.sin(theta); 61 //GCJ02转web墨卡托84 62 var earthRad = 6378137.0; 63 pp.lng = gg_lng * Math.PI / 180 * earthRad; 64 var a = gg_lat * Math.PI / 180; 65 pp.lat = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a))); 66 console.log("使用点击换位置获取的百度坐标转换后的WebMercator坐标是("+pp.lng+","+pp.lat+")"); 67 return callback(pp); 68 } 69 70 var local = new BMap.LocalSearch(map, { onSearchComplete: getAddress}); 71 local.search(myValue); 72 }