[Inhalt] [Zurück] [Weiter] [Thema] [Index]

FindPoly()


Syntax:

FindPoly(Karte K, GeoPoint p) : Polygon
K: eine Karte

Beispiel:

MyKlickFunc (Karte AktMap, GeoPoint AktPoint)
messstelle := FindPoly (AktMap, AktPoint)
END

Beschreibung:

Alle aktiven (@Active) Layer der Karte K werden durchsucht.

Zuerst werden alle Einpunkt-Polygone (z.B. Messstellen) durchsucht. Liegt ein Polygon innerhalb des Fangradius (5 Pixel), so wird es zurückgegeben. Zu beachten ist, dass die Schätzung, wieviel Meter 5 Pixel entsprechen, auf Gauß-Krüger-Koordinaten basiert. Für Koordinatenangaben in Grad ist diese Funktion unbrauchbar.

Darauf werden die Linien-Polygone durchsucht. Ist der Abstand von p zu einem Linienzug innerhalb des Fangradius, so wird dieses Polygon zurückgegeben.

Schließlich werden alle Flächen-Polygone durchsucht. Ist der Punkt p in der Fläche (aber nicht in einer Insel) enthalten, dann wird dieses Flächen-Polygon zurückgeliefert.

Wird kein Polygon gefunden, dann wird ein ungültiges zurückgeliefert (IsValid()).

Diese Funktion findet vor allem Anwendung in Azurfunktionen, die durch das Betätigen der mittleren Maustaste in einem GeoCanvas aufgerufen wurden. Diese Funktionen nennt man Handler, sie werden z.B. aufgerufen, wenn ein Button gedrückt wird. Mit der Funktion SetHandle() kann diese Funktion gesetzt werden. Der Name des AGElements ist dabei der Name des GeoCanvas, auf dem die jeweilige Karte liegt.

Betätigt der Benutzer nun die mittlere Maustaste innerhalb der Karte, so wird der Handler aufgerufen. Die beiden Sonderparameter AktMap und AktPoint enthalten die Karte und den Punkt, der angeklickt wurde, in Gauß-Krüger-Koordinaten (siehe Beispiel oben).

Siehe auch PolyInside(), Selection() und GeoPoint().



toposoft 28.10.2024