Openlayersでのループ選択、ポリゴン選択点要素の実装


/**
 *       
 */
function  drawInteraction(Googlemap,features,layers) {
     
  var source = new SourceVector({
     
    features: features,
  })
  var draw = new olInteraction.Draw({
     
      source: source,
      type:"Polygon",     //        Circle    
  });
  Googlemap.addInteraction(draw);

  draw.on('drawend',async (evt) => {
     
      var polygon = await evt.feature.getGeometry();
         var center = polygon.getCenter(),radius = polygon.getRadius(),extent = polygon.getExtent();
         var features = layers.getSource().getFeaturesInExtent(extent); //   feature   
         for(var i=0;i<features.length;i++){
     
             var newCoords = features[i].getGeometry().getCoordinates();
             if(pointInsideCircle(newCoords,center,radius)){
     
                 console.log(features[i]);      //    
             }
         }
  })
}

このうち3つのパラメータは要素集合,地図インスタンス,レイヤーpointInsideCircleであり,1つの点が円形にあるか否かを判断するアルゴリズムである.