OL3 - Найти любую точку в каждом полигоне - PullRequest
0 голосов
/ 29 октября 2018

Я хочу найти все точки в странах, я создаю сотню точек и выполняю поиск по полигонам. Но результатов не найдено!

var count = 100;
var features = new Array(count);
var e = 4500000;
for (var i = 0; i < count; ++i) {
  var coordinates = [(2 * e * Math.random() - e)+20, (2 * e * Math.random() - e)+20];
  features[i] = new ol.Feature(new ol.geom.Point(coordinates));
}

var polyFeatures;
$.get(
  'https://raw.githubusercontent.com/johan/world.geo.json/master/countries.geo.json',
  function(res) {
    var format = new ol.format.GeoJSON();
    polyFeatures = format.readFeatures(res);
    polyFeatures.forEach(function(poly) {
      features.forEach(function(point) {
        //console.log(poly.getGeometry().getExtent())
        if(poly.getGeometry().intersectsExtent(point.getGeometry().getExtent())){
          console.log('Fount!');
        }else
        {console.log('Not Fount!')}
      });
    });
  }
);

код на Plunker здесь

1 Ответ

0 голосов
/ 29 октября 2018

Ваши случайные точки в координатах карты, геойсон в lonlat, вам нужно преобразовать одну из них в поиске

if(poly.getGeometry().clone().transform('EPSG:4326','EPSG:3857').intersectsExtent(point.getGeometry().getExtent())){

или

if(poly.getGeometry().intersectsExtent(point.getGeometry().clone().transform('EPSG:3857','EPSG:4326',).getExtent())){
...