首页 > 技术文章 > 判断百度地图上的一个点是否在一个多边形区域内

panyujun 2018-12-20 19:51 原文

1、首先获取该点的经纬度,百度坐标

2、将所有点,封装成百度point对象,要引入百度地图jdk,script标签引入

3、用GeoUtils插件提供的方法判断

//polygonArray是多边形区域的各点的经纬度
//longtitude,latitude是要判断的点的经纬度
//_是undersotre插件
isInPolygon: function (polygonArray, longitude, latitude) {
    if (longitude < 1 || latitude < 1) return true;
    var polygonArray = polygonArray;
    var mapPolygon = [];
    _.each(polygonArray, function (item) {
        var points = [];
        _.each(item, function (point) {
            points.push(new BMap.Point(point.lng,point.lat));
        });
        var polygon = new BMap.Polygon(points); //创建多边形  
        mapPolygon.push(polygon);
    });
    var isIn = _.some(mapPolygon, function (polygon) {
        return BMapLib.GeoUtils.isPointInPolygon(new BMap.Point(longitude, latitude), polygon);
    });
    if (isIn) {
        return true;
    } else {
        return false;
        }
}

 

推荐阅读