<\/P>
Vor Kurzem gab es eine coole Blogserie zur Verwendung der GeometryEngine<\/A> in der ArcGIS JS API. Falls Sie sie noch nicht gelesen haben, kann ich das sehr empfehlen.<\/P><\/P>Aber bevor wir die GeometryEngine hatten, mussten wir die Dinge auf die altmodische Art erledigen<\/EM>, indem wir Geometrien manuell selbst überprüften.<\/P><\/P>Ich habe dies aus einem Anwendungsfall gezogen, den ich in einem alten Repository von mir gefunden habe. Der Anwendungsfall ist, dass ich einen Punkt habe und bevor ich irgendetwas mit diesem Punkt machen kann, muss ich wissen, ob der Punkt in anderen Features enthalten ist.<\/P><\/P>Zum Beispiel habe ich Daten, die in Echtzeit in meine App gestreamt werden, sagen wir Serviceanfragen, aber ich interessiere mich nur dafür, diejenigen zu sehen, die sich in vordefinierten Servicebereichen befinden.<\/P><\/P>Ein einfaches Hilfsprogramm könnte ungefähr so aussehen:<\/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>Im Grunde iterieren Sie also über die Grafiken und sobald Sie eine Grafik finden, die den Punkt enthält, geben Sie ihn zurück. Das spart Zeit, da nicht alle Grafiken durchlaufen werden müssen<\/EM>.<\/P><\/P>Sie könnten das sogar etwas anpassen, indem Sie die Grafik im Graphics-Array finden, die den Punkt enthält<\/EM>, und anstatt den Punkt zurückzugeben, die Grafik zurückgeben<\/EM>. Um es richtig zu machen, müssten Sie jedoch alle Grafiken durchlaufen, was je nach Anwendung teuer sein könnte.<\/P><\/P>Hier ist ein Beispiel dafür, wie das in Aktion aussehen könnte:<\/P>JS Bin - Collaborative JavaScript Debugging<\/A><\/P>Um es zu testen, zeichnen Sie einige Rechtecke und Polygone auf der Karte und versuchen Sie dann Punkte hinzuzufügen. Sie sollten nur Punkte innerhalb der Polygone hinzufügen können.<\/P><\/P>Sie könnten sogar ziemlich funktional werden und anfangen, Geometrien herauszufiltern, die Sie in die GeometryEngine werfen können und jetzt<\/EM><\/STRONG> haben Sie eine Party!<\/P><\/P>Für weitere geodev Tipps und Tricks, schauen Sie sich meinen Blog an!<\/A><\/P><\/BODY><\/HTML>
Aber bevor wir die GeometryEngine hatten, mussten wir die Dinge auf die altmodische Art erledigen<\/EM>, indem wir Geometrien manuell selbst überprüften.<\/P><\/P>Ich habe dies aus einem Anwendungsfall gezogen, den ich in einem alten Repository von mir gefunden habe. Der Anwendungsfall ist, dass ich einen Punkt habe und bevor ich irgendetwas mit diesem Punkt machen kann, muss ich wissen, ob der Punkt in anderen Features enthalten ist.<\/P><\/P>Zum Beispiel habe ich Daten, die in Echtzeit in meine App gestreamt werden, sagen wir Serviceanfragen, aber ich interessiere mich nur dafür, diejenigen zu sehen, die sich in vordefinierten Servicebereichen befinden.<\/P><\/P>Ein einfaches Hilfsprogramm könnte ungefähr so aussehen:<\/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>Im Grunde iterieren Sie also über die Grafiken und sobald Sie eine Grafik finden, die den Punkt enthält, geben Sie ihn zurück. Das spart Zeit, da nicht alle Grafiken durchlaufen werden müssen<\/EM>.<\/P><\/P>Sie könnten das sogar etwas anpassen, indem Sie die Grafik im Graphics-Array finden, die den Punkt enthält<\/EM>, und anstatt den Punkt zurückzugeben, die Grafik zurückgeben<\/EM>. Um es richtig zu machen, müssten Sie jedoch alle Grafiken durchlaufen, was je nach Anwendung teuer sein könnte.<\/P><\/P>Hier ist ein Beispiel dafür, wie das in Aktion aussehen könnte:<\/P>
Um es zu testen, zeichnen Sie einige Rechtecke und Polygone auf der Karte und versuchen Sie dann Punkte hinzuzufügen. Sie sollten nur Punkte innerhalb der Polygone hinzufügen können.<\/P>
Sie könnten sogar ziemlich funktional werden und anfangen, Geometrien herauszufiltern, die Sie in die GeometryEngine werfen können und jetzt<\/EM><\/STRONG> haben Sie eine Party!<\/P><\/P>Für weitere geodev Tipps und Tricks,
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registrieren Sie ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.