/** * 检查用户是否在登记范围内(内部设置指定坐标) 坐标需传入同一坐标系 * @param {Object} place 指定地点坐标 * @param {Number} place.lng * @param {Number} place.lat * @param {Object} user 用户当前坐标 * @param {Number} user.lng * @param {Number} user.lat * @param {Number} range 地点坐标XX米范围 * @returns {Boolean} */export const checkDesLocation = params => { const place = params.place || { lng: 113.121987, lat: 23.016794 }, user = params.user, range = params.range || 0; const radLat1 = place.lat * Math.PI / 180.0, radLat2 = user.lat * Math.PI / 180.0, a = radLat1 - radLat2, b = place.lng * Math.PI / 180.0 - user.lng * Math.PI / 180.0; let 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; s = Math.floor(Math.round(s * 10000) / 10); return s < range;};// 调用方法checkDesLocation({ place: { lng: 113.331084, lat: 23.112223 }, user: { lng: 113.331084, lat: 23.112223 }, range: 500}); // truecheckDesLocation({ place: { lng: 113.331084, lat: 23.112223 }, user: { lng: 113.333566, lat: 23.125733 }, range: 500}); // false