根据提供的经纬度,返回配置范围内经纬度的最大值和最小值。
使用示例: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;
}