Нахождение точки лежит на линии или нет на карте Esri с помощью Arcgis API - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь определить, находится ли точка на линии или нет, как показано ниже

 function identifyFeatures(evt){
     var extentGeom = pointToExtent(map,evt.mapPoint,10);
     var filteredGraphics = dojo.filter(testLayer.graphics, function(gg) {
         if(extentGeom.contains(gg.geometry.getExtent())){
             return extentGeom.contains(gg.geometry.getExtent());
         } else {
             return gg.geometry.getExtent().contains(extentGeom);
         } 
      });
      var content = "";
      content = "<i>Total Features: " + filteredGraphics.length + "</i>";
      map.infoWindow.setContent(content);
      map.infoWindow.setTitle("Identify Results");
      var anchor = map.getInfoWindowAnchor(evt.screenPoint);
      map.infoWindow.show(evt.screenPoint,anchor);
 };

Я использую содержит метод экстента и пытаюсь проверить, является ли экстент нажатой точкипадение на экстенте линии или экстенте линии падает на экстенте нажатой точки. Но если я нажму на центр линии, то получу только объекты.Вы можете увидеть код fiddle

Может ли кто-нибудь подсказать мне, есть ли другой способ проверить, находится ли точка на линии или нет?

1 Ответ

0 голосов
/ 27 ноября 2018

Вы должны просто отфильтровать графику, если экстент точки (дополненный вашей extentToPoint() функцией) intersects() с геометрией линии.

  function identifyFeatures(evt){
      var extentGeom = pointToExtent(map,evt.mapPoint,10);
      var filteredGraphics = dojo.filter(testLayer.graphics, function(gg) {
        return extentGeom.intersects(gg.geometry);
      });
      var content = "<i>Total Features: " + filteredGraphics.length + "</i>";
      map.infoWindow.setContent(content);
      map.infoWindow.setTitle("Identify Results");
      map.infoWindow.show(evt.screenPoint,map.getInfoWindowAnchor(evt.screenPoint));
  };

см.рабочая демоверсия: https://jsfiddle.net/q68rzde2/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...