百度地图API 拖拽或点击地图位置获取坐标

时间:2023-03-08 23:13:59
百度地图API   拖拽或点击地图位置获取坐标
     function setPlace(map,myValue,callback){
function getAddress(){
var pp = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果
map.centerAndZoom(pp, 18);
var marker = new BMap.Marker(pp);// 创建标注
map.addOverlay(marker); // 将标注添加到地图中
marker.enableDragging(); // 可拖拽 marker.addEventListener('dragend', function (e) {//拖动标注结束
var pointNew = e.point;
console.log("使用拖拽获取的百度坐标"+pointNew.lng+","+pointNew.lat);
marker.setPosition(pointNew);//设置覆盖物位置
//百度转GCJ-02
var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
var x = pointNew.lng - 0.0065;
var y = pointNew.lat - 0.006;
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
var gg_lng = z * Math.cos(theta);
var gg_lat = z * Math.sin(theta);
//百度GCJ02转web墨卡托84
var earthRad = 6378137.0;
pointNew.lng = gg_lng * Math.PI / 180 * earthRad;
var a = gg_lat * Math.PI / 180;
pointNew.lat = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));
console.log("使用拖拽获取的百度坐标转换的WebMercator坐标是("+pointNew.lng+","+pointNew.lat+")");
return callback(pointNew);
}); map.addEventListener("click", function(e){
console.log('换位置百度的经度:'+e.point.lng+' , 纬度: '+e.point.lat);
var now_point = new BMap.Point(e.point.lng, e.point.lat );
marker.setPosition(now_point);//设置覆盖物位置
var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
var x = now_point.lng - 0.0065;
var y = now_point.lat - 0.006;
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
var gg_lng = z * Math.cos(theta);
var gg_lat = z * Math.sin(theta);
//GCJ02转web墨卡托84
var earthRad = 6378137.0;
now_point.lng = gg_lng * Math.PI / 180 * earthRad;
var a = gg_lat * Math.PI / 180;
now_point.lat = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));
console.log("WebMercator坐标是("+now_point.lng+","+now_point.lat+")");
return callback(now_point);
});
//百度转墨卡托
console.log("使用点击换位置获取的百度坐标百度地图坐标是("+pp.lng+","+pp.lat+")");
//百度转GCJ-02
var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
var x = pp.lng - 0.0065;
var y = pp.lat - 0.006;
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
var gg_lng = z * Math.cos(theta);
var gg_lat = z * Math.sin(theta);
//GCJ02转web墨卡托84
var earthRad = 6378137.0;
pp.lng = gg_lng * Math.PI / 180 * earthRad;
var a = gg_lat * Math.PI / 180;
pp.lat = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));
console.log("使用点击换位置获取的百度坐标转换后的WebMercator坐标是("+pp.lng+","+pp.lat+")");
return callback(pp);
} var local = new BMap.LocalSearch(map, { onSearchComplete: getAddress});
local.search(myValue);
}