Xamarin.Forms Zuordnen von Polygonen und Polylinien
Polygon
Mit den Polyline
Elementen , und Circle
können Sie bestimmte Bereiche auf einer Karte hervorheben. Ein Polygon
ist eine vollständig eingeschlossene Form, die eine Strich- und Füllfarbe aufweisen kann. Ein Polyline
ist eine Linie, die einen Bereich nicht vollständig umschließt. Ein Circle
hebt einen kreisförmigen Bereich der Karte hervor:
Die Polygon
Klassen , Polyline
und Circle
leiten sich von der MapElement
-Klasse ab, die die folgenden bindbaren Eigenschaften verfügbar macht:
StrokeColor
ist einColor
-Objekt, das die Linienfarbe bestimmt.StrokeWidth
ist einfloat
-Objekt, das die Linienbreite bestimmt.
Die Polygon
-Klasse definiert eine zusätzliche bindbare Eigenschaft:
FillColor
ist einColor
-Objekt, das die Hintergrundfarbe des Polygons bestimmt.
Darüber hinaus definieren die Polygon
Klassen und Polyline
beide eine GeoPath
Eigenschaft, bei der es sich um eine Liste von Position
Objekten handelt, die die Punkte der Form angeben.
Die Circle
-Klasse definiert die folgenden bindbaren Eigenschaften:
Center
ist einPosition
-Objekt, das den Mittelpunkt des Kreises in Breiten- und Längengrad definiert.Radius
ist einDistance
-Objekt, das den Radius des Kreises in Metern, Kilometern oder Meilen definiert.FillColor
ist eineColor
Eigenschaft, die die Farbe innerhalb des Kreisumrands bestimmt.
Hinweis
Wenn die StrokeColor
-Eigenschaft nicht angegeben ist, wird der Strich standardmäßig auf schwarz festgelegt. Wenn die FillColor
-Eigenschaft nicht angegeben ist, wird die Füllung standardmäßig auf transparent festgelegt. Wenn also keine eigenschaft angegeben ist, weist die Form eine schwarze Kontur ohne Füllung auf.
Erstellen eines Polygons
Ein Polygon
-Objekt kann einer Karte hinzugefügt werden, indem es instanziiert und der Auflistung der MapElements
Karte hinzugefügt wird. Dies kann in XAML folgendermaßen erfüllt werden:
<ContentPage ...
xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps">
<maps:Map>
<maps:Map.MapElements>
<maps:Polygon StrokeColor="#FF9900"
StrokeWidth="8"
FillColor="#88FF9900">
<maps:Polygon.Geopath>
<maps:Position>
<x:Arguments>
<x:Double>47.6368678</x:Double>
<x:Double>-122.137305</x:Double>
</x:Arguments>
</maps:Position>
...
</maps:Polygon.Geopath>
</maps:Polygon>
</maps:Map.MapElements>
</maps:Map>
</ContentPage>
Der entsprechende C#-Code lautet:
using Xamarin.Forms.Maps;
// ...
Map map = new Map
{
// ...
};
// instantiate a polygon
Polygon polygon = new Polygon
{
StrokeWidth = 8,
StrokeColor = Color.FromHex("#1BA1E2"),
FillColor = Color.FromHex("#881BA1E2"),
Geopath =
{
new Position(47.6368678, -122.137305),
new Position(47.6368894, -122.134655),
new Position(47.6359424, -122.134655),
new Position(47.6359496, -122.1325521),
new Position(47.6424124, -122.1325199),
new Position(47.642463, -122.1338932),
new Position(47.6406414, -122.1344833),
new Position(47.6384943, -122.1361248),
new Position(47.6372943, -122.1376912)
}
};
// add the polygon to the map's MapElements collection
map.MapElements.Add(polygon);
Die StrokeColor
Eigenschaften und StrokeWidth
werden angegeben, um die Kontur des Polygons anzupassen. Der FillColor
Eigenschaftswert stimmt mit dem StrokeColor
Eigenschaftswert überein, hat jedoch einen Alphawert, der angegeben ist, um ihn transparent zu machen, sodass die zugrunde liegende Zuordnung durch die Form sichtbar ist. Die GeoPath
-Eigenschaft enthält eine Liste von Position
Objekten, die die geografischen Koordinaten der Polygonpunkte definieren. Ein Polygon
-Objekt wird auf der Karte gerendert, nachdem es der MapElements
Auflistung von Map
hinzugefügt wurde.
Hinweis
Ein Polygon
ist eine vollständig eingeschlossene Form. Der erste und der letzte Punkt werden automatisch verbunden, wenn sie nicht übereinstimmen.
Erstellen einer Polylinie
Ein Polyline
-Objekt kann einer Karte hinzugefügt werden, indem es instanziiert und der Auflistung der MapElements
Karte hinzugefügt wird. Dies kann in XAML folgendermaßen erfüllt werden:
<ContentPage ...
xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps">
<maps:Map>
<maps:Map.MapElements>
<maps:Polyline StrokeColor="Blue"
StrokeWidth="12">
<maps:Polyline.Geopath>
<maps:Position>
<x:Arguments>
<x:Double>47.6381401</x:Double>
<x:Double>-122.1317367</x:Double>
</x:Arguments>
</maps:Position>
...
</maps:Polyline.Geopath>
</maps:Polyline>
</maps:Map.MapElements>
</maps:Map>
</ContentPage>
using Xamarin.Forms.Maps;
// ...
Map map = new Map
{
// ...
};
// instantiate a polyline
Polyline polyline = new Polyline
{
StrokeColor = Color.Blue,
StrokeWidth = 12,
Geopath =
{
new Position(47.6381401, -122.1317367),
new Position(47.6381473, -122.1350841),
new Position(47.6382847, -122.1353094),
new Position(47.6384582, -122.1354703),
new Position(47.6401136, -122.1360819),
new Position(47.6403883, -122.1364681),
new Position(47.6407426, -122.1377019),
new Position(47.6412558, -122.1404056),
new Position(47.6414148, -122.1418647),
new Position(47.6414654, -122.1432702)
}
};
// add the polyline to the map's MapElements collection
map.MapElements.Add(polyline);
Die StrokeColor
Eigenschaften und StrokeWidth
werden angegeben, um die Zeile anzupassen. Die GeoPath
-Eigenschaft enthält eine Liste von Position
Objekten, die die geografischen Koordinaten der Polylinienpunkte definieren. Ein Polyline
-Objekt wird auf der Karte gerendert, nachdem es der MapElements
Auflistung von Map
hinzugefügt wurde.
Erstellen eines Kreises
Ein Circle
-Objekt kann einer Karte hinzugefügt werden, indem es instanziiert und der Auflistung der MapElements
Karte hinzugefügt wird. Dies kann in XAML folgendermaßen erfüllt werden:
<ContentPage ...
xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps">
<maps:Map>
<maps:Map.MapElements>
<maps:Circle StrokeColor="#88FF0000"
StrokeWidth="8"
FillColor="#88FFC0CB">
<maps:Circle.Center>
<maps:Position>
<x:Arguments>
<x:Double>37.79752</x:Double>
<x:Double>-122.40183</x:Double>
</x:Arguments>
</maps:Position>
</maps:Circle.Center>
<maps:Circle.Radius>
<maps:Distance>
<x:Arguments>
<x:Double>250</x:Double>
</x:Arguments>
</maps:Distance>
</maps:Circle.Radius>
</maps:Circle>
</maps:Map.MapElements>
...
</maps:Map>
</ContentPage>
Der entsprechende C#-Code lautet:
using Xamarin.Forms.Maps;
// ...
Map map = new Map();
// Instantiate a Circle
Circle circle = new Circle
{
Center = new Position(37.79752, -122.40183),
Radius = new Distance(250),
StrokeColor = Color.FromHex("#88FF0000"),
StrokeWidth = 8,
FillColor = Color.FromHex("#88FFC0CB")
};
// Add the Circle to the map's MapElements collection
map.MapElements.Add(circle);
Die Position von auf Circle
der Karte wird durch den Wert der Center
Eigenschaften und Radius
bestimmt. Die Center
-Eigenschaft definiert den Mittelpunkt des Kreises in Breiten- und Längengrad, während die Radius
-Eigenschaft den Radius des Kreises in Metern definiert. Die StrokeColor
Eigenschaften und StrokeWidth
werden angegeben, um die Gliederung des Kreises anzupassen. Der FillColor
-Eigenschaftswert gibt die Farbe innerhalb des Kreisumrands an. Beide Farbwerte geben einen Alphakanal an, sodass die zugrunde liegende Karte durch den Kreis sichtbar ist. Das Circle
-Objekt wird auf der Karte gerendert, nachdem es der MapElements
Auflistung von Map
hinzugefügt wurde.
Hinweis
Die GeographyUtils
-Klasse verfügt über eine ToCircumferencePositions
Erweiterungsmethode, die ein Circle
-Objekt (das - und Radius
-Eigenschaftswerte Center
definiert) in eine Liste von Position
Objekten konvertiert, die die Breiten- und Längengradkoordinaten des Kreisumkreises bilden.