/* * 根据中心点坐标和距离(米),计算范围 */ function haversineLnglat(orign, dist){ let radius = 6378137 // 求东西两侧的的范围边界。在haversin公式中令φ1 = φ2(维度相同) let lat = toRadians(orign[1]) let dlng = 2 * Math.asin(Math.sin(dist / (2 * radius)) / Math.cos(lat)); // 弧度转换成角度 dlng = toDegrees(dlng); // 然后求南北两侧的范围边界,在haversin公式中令 Δλ = 0 let dlat = dist / 6378137; // 弧度转换成角度 dlat = toDegrees(dlat); return [orign[0] - dlng, orign[1] - dlat, orign[0] + dlng, orign[1] + dlat] } function toRadians(_){ return _ * Math.PI / 180 } function toDegrees(_){ return _ * 180 / Math.PI } //haversineLnglat([117, 34], 5000) //[116.94582179841282, 33.955084235794025, 117.05417820158718, 34.044915764205975] //haversineLnglat([117, 34], 6000) //[116.93498615776213, 33.94610108295283, 117.06501384223787, 34.05389891704717]