获取中心点和缩放级别


获取中心点和缩放级别

// 获取中心点和缩放级别
let getCenterAndZoom=(maxJ, minJ, maxW, minW,i)=>{
  var centerLongitude = ((parseFloat(minJ) + parseFloat(maxJ)) / 2).toFixed(5);
    var centerLatitude = ((parseFloat(minW) + parseFloat(maxW)) / 2).toFixed(5);
    let zoom = getCenterPoint(maxJ, minJ, maxW, minW)
    if(i){
      zoom+=1
    }
    //如果经纬度在array中不是数字类型,需要转化为数字类型进行计算,如果是可以去掉parseFloat处理
    //console.log(centerLongitude+"kkk"+centerLatitude);
    return [centerLongitude, centerLatitude, zoom];
}
let getCenterPoint=(maxJ, minJ, maxW, minW)=>{ //通过经纬度获取中心位置和缩放级别
  let dd=getDistance(maxW,maxJ,minW,minJ)
  var diffArr =  [0.01, 0.02, 0.05, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 50, 100, 200, 500, 1000]
  for (var i = 0; i < diffArr.length; i++) {
    if (diffArr[i] - dd > 0) {
      // 18 - i + 3
      return 19 - i + 3; //之所以会多4,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加4。
    }
  }
}
// 根据两点经纬度计算距离
const getDistance = (lat1, lng1, lat2, lng2) => {
  var radLat1 = lat1 * Math.PI / 180.0;
  var radLat2 = lat2 * Math.PI / 180.0;
  var a = radLat1 - radLat2;
  var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
  var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
    Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
  s = s * 6378.137; // EARTH_RADIUS;
  s = Math.round(s * 10000) / 10000;
  return s;
}

文章作者: Born to the sun
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Born to the sun !
评论
  目录