js 根据当前位置经纬度,获取一定距离内的经纬度的最大/小值

根据提供的经纬度,返回配置范围内经纬度的最大值和最小值。

使用示例:getMaxMinLongitudeLatitude(curPositionObj.lng,

curPositionObj.lat, 0.5)//范围当前位置500米范围内经纬度的最大值和最小值

var isPosition = true, //是否定位
    curPositionObj, //当前经纬度
    curPostionRange, //经纬度范围
    curPositionSuc=false; //当前定位是否成功
if (isPosition) {
    //精准定位
    AMap.plugin('AMap.Geolocation', function() {
          var geolocation = new AMap.Geolocation({
              enableHighAccuracy: true,
              /*是否使用高精度定位,默认:true*/
              timeout: 10000,
              /*超过10秒后停止定位,默认:5s*/
              buttonPosition: 'RB',
              /*定位按钮的停靠位置*/
              buttonOffset: new AMap.Pixel(10, 20),
              /*定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)*/
              zoomToAccuracy: false /*定位成功后是否自动调整地图视野到定位点*/
          });
          geolocation.getCurrentPosition(function(status, result) {
              if (status == 'complete') {
                curPositionSuc=true;
                curPositionObj=result.position;
                curPostionRange=getMaxMinLongitudeLatitude(curPositionObj.lng,curPositionObj.lat,0.5);//当前500米范围的经纬度范围。 
              } else {
                  alert('定位失败!');
              }
          });
        });
}

/**
 * @param {*} longitude
 * @param {*} latitude
 * @param {*} distince  千米
 * @returns
 */
function getMaxMinLongitudeLatitude(longitude,latitude,distince){
    let r = 6371.393;    // 地球半径千米
    let lng = longitude;
    let lat = latitude;
    let dlng = 2 * Math.asin(Math.sin(distince / (2 * r)) / Math.cos(lat * Math.PI / 180));
    dlng = dlng * 180 / Math.PI;// 角度转为弧度
    let dlat = distince / r;
    dlat = dlat * 180 / Math.PI;
    let minlat = lat - dlat;
    let maxlat = lat + dlat;
    let minlng = lng - dlng;
    let maxlng = lng + dlng;
    var lngLatObj={
        minlng:minlng,
        maxlng:maxlng,
        minlat:minlat,
        maxlat:maxlat
    }
    return lngLatObj;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值