Solution ES6
/**
* Verify if point of coordinates (longitude, latitude) is polygon of coordinates
* https://github.com/substack/point-in-polygon/blob/master/index.js
* @param {number} latitude Latitude
* @param {number} longitude Longitude
* @param {array<[number,number]>} polygon Polygon contains arrays of points. One array have the following format: [latitude,longitude]
*/
export function isPointInPolygon (latitude, longitude, polygon) {
if (typeof latitude !== 'number' || typeof longitude !== 'number') {
throw new TypeError('Invalid latitude or longitude. Numbers are expected')
} else if (!polygon || !Array.isArray(polygon)) {
throw new TypeError('Invalid polygon. Array with locations expected')
} else if (polygon.length === 0) {
throw new TypeError('Invalid polygon. Non-empty Array expected')
}
const x = latitude; const y = longitude
let inside = false
for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
const xi = polygon[i][0]; const yi = polygon[i][1]
const xj = polygon[j][0]; const yj = polygon[j][1]
const intersect = ((yi > y) !== (yj > y)) &&
(x < (xj - xi) * (y - yi) / (yj - yi) + xi)
if (intersect) inside = !inside
}
return inside
};
The post How to verify if point of coordinates is inside polygon [Javascript] appeared first on boobo94.
Top comments (0)