<\/P>
Assez récemment, il y a eu une super série de blogs sur l'utilisation de GeometryEngine<\/A> dans l'API ArcGIS JS. Si vous ne l'avez pas lue, je vous la recommande vivement.<\/P><\/P>Mais avant que nous ayons GeometryEngine, nous devions faire les choses à l'ancienne<\/EM>, en vérifiant manuellement les géométries par nous-mêmes.<\/P><\/P>J'ai extrait ceci d'un cas d'utilisation que j'ai trouvé dans un ancien dépôt à moi. Le cas d'utilisation est que j'ai un point, et avant de pouvoir faire quoi que ce soit avec ce point, je dois savoir si le point est contenu dans d'autres entités.<\/P><\/P>Par exemple, j'ai des données diffusées en temps réel dans mon application, disons des demandes de service, mais je ne m'intéresse qu'à celles qui se trouvent dans certaines zones de service prédéfinies.<\/P><\/P>Une utilité simple pourrait ressembler à ceci :<\/P><\/P>define([], function () { var geomUtil = {}; geomUtil.graphicsContain = function (graphics, pt) { var len = graphics.length; while (len--) { var graphic = graphics[len]; if (graphic.geometry.contains && graphic.geometry.contains(pt)) { return pt; } } return null; }; return geomUtil;});<\/PRE><\/P>Donc en gros, vous parcourez les graphics et dès que vous trouvez un graphic qui contient le point, vous le retournez. Cela fait gagner du temps car il n'est pas nécessaire de parcourir tous les graphics pour terminer<\/EM>.<\/P><\/P>Vous pourriez même ajuster cela un peu en trouvant le graphic dans le tableau graphics qui contient le point<\/EM> et au lieu de retourner le point, retourner le graphic<\/EM>. Pour bien faire, il faudrait parcourir tous les graphics cependant, ce qui selon votre application pourrait être coûteux.<\/P><\/P>Voici un exemple de ce à quoi cela pourrait ressembler en action :<\/P>JS Bin - Débogage JavaScript Collaboratif<\/A><\/P>Pour le tester, dessinez quelques rectangles et polygones sur la carte puis essayez d'ajouter des points. Vous ne devriez pouvoir ajouter des points qu'à l'intérieur des polygones.<\/P><\/P>Vous pourriez même devenir assez fonctionnel et commencer à filtrer les géométries que vous pouvez envoyer dans GeometryEngine et maintenant<\/EM><\/STRONG> vous avez une fête !<\/P><\/P>Pour plus d'astuces geodev, jetez un œil à mon blog !<\/A><\/P><\/BODY><\/HTML>
Mais avant que nous ayons GeometryEngine, nous devions faire les choses à l'ancienne<\/EM>, en vérifiant manuellement les géométries par nous-mêmes.<\/P><\/P>J'ai extrait ceci d'un cas d'utilisation que j'ai trouvé dans un ancien dépôt à moi. Le cas d'utilisation est que j'ai un point, et avant de pouvoir faire quoi que ce soit avec ce point, je dois savoir si le point est contenu dans d'autres entités.<\/P><\/P>Par exemple, j'ai des données diffusées en temps réel dans mon application, disons des demandes de service, mais je ne m'intéresse qu'à celles qui se trouvent dans certaines zones de service prédéfinies.<\/P><\/P>Une utilité simple pourrait ressembler à ceci :<\/P><\/P>define([], function () { var geomUtil = {}; geomUtil.graphicsContain = function (graphics, pt) { var len = graphics.length; while (len--) { var graphic = graphics[len]; if (graphic.geometry.contains && graphic.geometry.contains(pt)) { return pt; } } return null; }; return geomUtil;});<\/PRE><\/P>Donc en gros, vous parcourez les graphics et dès que vous trouvez un graphic qui contient le point, vous le retournez. Cela fait gagner du temps car il n'est pas nécessaire de parcourir tous les graphics pour terminer<\/EM>.<\/P><\/P>Vous pourriez même ajuster cela un peu en trouvant le graphic dans le tableau graphics qui contient le point<\/EM> et au lieu de retourner le point, retourner le graphic<\/EM>. Pour bien faire, il faudrait parcourir tous les graphics cependant, ce qui selon votre application pourrait être coûteux.<\/P><\/P>Voici un exemple de ce à quoi cela pourrait ressembler en action :<\/P>
Pour le tester, dessinez quelques rectangles et polygones sur la carte puis essayez d'ajouter des points. Vous ne devriez pouvoir ajouter des points qu'à l'intérieur des polygones.<\/P>
Vous pourriez même devenir assez fonctionnel et commencer à filtrer les géométries que vous pouvez envoyer dans GeometryEngine et maintenant<\/EM><\/STRONG> vous avez une fête !<\/P><\/P>Pour plus d'astuces geodev,
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.