您的位置:首页 > Web前端 > JavaScript

百度地图BMap JS中根据两点经纬度坐标生成覆盖物并调整方向

2016-12-21 14:35 239 查看
首先从数据库中取得数据左边,后台代码就不放了,只放ajax

$.ajax({

 url: basePath+"XXXX",
 type: "post", 
 success: function(data) {
  try{
  locs=eval(data);
  var len1=locs.length;
  for(var i=0;i<len1;i++){
var locsChild=locs[i].data;
var len2=locsChild.length;
var flag = 0; // 前一个坐标标记
  for(var j=0;j<len2;j++){
  if(locsChild[j].location_type=="1"){//判断是点坐标还是线路
  createMarker(locsChild[j],type,locsChild[flag]);//是点坐标的话调用生成marker的方法,相邻的两个坐标点为参数
  flag = j;
   
}else if(locsChild[j].location_type=="0"){
   
createPolyline(locsChild[j],i);//生成线路
   
}
  }
  }
$("#allmap").hideLoading();
  }catch(ex){
  $("#allmap").hideLoading(); 
  openDialog(ex);
  }
 },
 error: function (XMLHttpRequest, textStatus, errorThrown) { 
  $("#allmap").hideLoading(); 
   openDialog(textStatus+" "+errorThrown); 
 } 
});

function createMarker(loc,type,preloc){

if(loc.data.length!=1){
return;
}
var myIcon= getIcon(XXXX);
var marker = new BMap.Marker(new BMap.Point(loc.data[0].lat,loc.data[0].lng),{icon:myIcon});//创建标注

if(!preloc.data.length!=1){

var Rc = 6378137; // 赤道半径

var Rj = 6356725; // 极半径 

var loc_m_RadLo = loc.data[0].lng * Math.PI/180.;
var pre_m_RadLo = preloc.data[0].lng * Math.PI/180.;
var loc_m_RadLa = loc.data[0].lat * Math.PI/180.;
var pre_m_RadLa = preloc.data[0].lat * Math.PI/180.;
var loc_Ec = Rj + (Rc - Rj) * (90.-loc.data[0].lat) / 90.;
var loc_Ed = loc_Ec * Math.cos(loc_m_RadLa);

var dx = (pre_m_RadLo - loc_m_RadLo) * loc_Ed;
var dy = (pre_m_RadLa - loc_m_RadLa) * loc_Ec;

var angle = Math.atan(Math.abs(dx/dy))*180./Math.PI;

var dLo = loc.data[0].lng - preloc.data[0].lng;
var dLa = loc.data[0].lat - preloc.data[0].lat;

//根据经纬度计算两点之间的角度
if(dLo > 0 && dLa <= 0) {
angle = (90. - angle) + 90.;
}
else if(dLo <= 0 && dLa < 0) {
angle = angle + 180.;
}
else if(dLo < 0 && dLa >= 0) {
angle = (90. - angle) + 270;
}
// alert("角度是:"+angle);
 
}

marker.setRotation(360-angle);//设置旋转角度

map.addOverlay(marker);// 将标注添加到地图中

…………

…………

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息