huiyan-fe / BMapGLLib

百度地图JSAPI GL版JavaScript开源工具库
MIT License
346 stars 126 forks source link

修复GeoUtils.isPolylineIntersectArea中的bug #56

Closed dream998 closed 6 months ago

dream998 commented 6 months ago

修复GeoUtils.isPolylineIntersectArea方法中的bug

// 之前的代码:这里将lines转为了普通对象数组,导致在下面isPointInPolygon中类型判断总是为false
// lines = lines.getPath().map(function (point) { return { 'lng': point.lng, 'lat': point.lat } });
// polygon = polygon.getPath().map(function (point) { return { 'lng': point.lng, lat: point.lat } });
// 更改后的代码
lines = lines.getPath()
polygon = polygon.getPath()

if (lines.length < 1 || polygon.length <= 2) {
    console.error('参数出错,传入值非折线和多边形')
    return false;
}
var maybeLine = [], ploygonLine = [];
for (var j = 0; j < lines.length; j++) {
// 这里调用isPointInPolygon传入的第一个参数是一个普通对象
    if (GeoUtils.isPointInPolygon(lines[j], polygon)) {
        return true;
    }
}
 GeoUtils.isPointInPolygon = function (point, polygon) {
        //这里对point进行类型检查,因为isPolylineIntersectArea第一个参数传入的是一个普通对象,导致类型判断总是返回false
        if (
            !(point.toString() === "Point" || point.toString() === "LatLng") ||
            !(polygon instanceof BMapGL.Polygon)
        ) {
            return false;
        }