//判断用户是否再半径内的坐标
function isPointInCircle(lng1, lat1, lng2, lat2, radius) {
const distance = getDistance(lng1, lat1, lng2, lat2);
return distance <= radius;
}
// 距离计算函数
function getDistance(lng1, lat1, lng2, lat2) {
// 使用合适的距离计算公式,如球面三角法或哈弗赛德公式
// 这里仅作示例,可以替换为你自己的计算方式
const dx = lng2 - lng1;
const dy = lat2 - lat1;
return Math.sqrt(dx*dx + dy*dy);
}
//多边形点判断
function isPointInPolygon(lng, lat, polygon) {
let inside = false;
for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
const xi = polygon[i].lng, yi = polygon[i].lat;
const xj = polygon[j].lng, yj = polygon[j].lat;
const intersect = ((yi > lat) !== (yj > lat)) &&
(lng < ((xj - xi) * (lat - yi) / (yj - yi)) + xi);
if (intersect) inside = !inside;
}
return inside;
}
export {
getIdData,
getAddress,
getDateTime,
getDate,
getDate1,
getIdDataPuls,
isPointInCircle,
isPointInPolygon
}
我这里是写在tool里面,到时候直接调用就可以了,如果只是单一使用,可以直接在页面中直接使用,isPointInCircle(半径判断)
isPointInPolygon(多边形判断)