要求
在地图上有多个点。用户要在地图上框选一个多边形。需要知道框住了哪些点。
思路
地图上任意一点,向某个方向的射线,如果与多边形有奇数个交点,则这个点在多边形内。
不证明了。
代码
/**
* 判断指定点坐标lnglat是否在经纬度数组polygon作为顶点数组描述的多边形内部。
* @param {lng,lat} lnglat 指定点坐标.
* @param [{lng,lat}] polygon 多边形的顶点经纬度坐标数组.
* @return 是否在多边形内部.
*/
function isPointInPolygon(lnglat, polygon){
var cnt =0;
for(var i=0;i<polygon.length;i++){