业务场景:在一次开发中,需要通过页面鼠标绘制多边形圈选人创建群聊
鼠标绘制
利用百度地图的鼠标绘制api画出多边形,例:百度鼠标绘制DEMO;
圈选完成后利用BMapLib.GeoUtils完成判断点是否在多边形内,BMapLib.GeoUtils中提供了多种判断的api
但是矩形的判断一直失败。。。。。无奈之下我打印了isPointInRect方法,并且复制下来在内部加了打印,发现类型判断一直不能通过,bounds参数的getSouthWest等方法也不存在。
41 GeoUtils.isPointInRect = function(point, bounds){
42 //检查类型是否正确
43 if (!(point instanceof BMap.Point) ||
44 !(bounds instanceof BMap.Bounds)) {
45 return false;
46 }
47 var sw = bounds.getSouthWest(); //西南脚点
48 var ne = bounds.getNorthEast(); //东北脚点
49 return (point.lng >= sw.lng && point.lng <= ne.lng && point.lat >= sw.lat && point.lat <= ne.lat);
50 }
使用多边形的判断方法代替矩形的判断方法
最后无奈之下我采用了多边形的判断方法isPointInPolygon代替了isPointInRect完成了这一需求,但是关于为什么矩形的判断方法不能使用我实在是不清楚,希望有知道的同学可以告诉我一下。。谢谢!