Xamarin.Forms Mapuj wielokąty i linie wielokątne
Polygon
, Polyline
i Circle
elementy umożliwiają wyróżnianie określonych obszarów na mapie. A Polygon
to w pełni zamknięty kształt, który może mieć kolor pociągnięcia i wypełnienia. A Polyline
to linia, która nie jest w pełni otaczana obszarem. Wyróżnia Circle
okrągły obszar mapy:
Klasy Polygon
, Polyline
i Circle
pochodzą z MapElement
klasy, która uwidacznia następujące powiązane właściwości:
StrokeColor
jest obiektem określającymColor
kolor linii.StrokeWidth
jest obiektem określającymfloat
szerokość linii.
Klasa Polygon
definiuje dodatkową właściwość powiązaną:
FillColor
Color
to obiekt, który określa kolor tła wielokąta.
Ponadto Polygon
klasy i Polyline
definiują GeoPath
właściwość , która jest listą Position
obiektów określających punkty kształtu.
Klasa Circle
definiuje następujące właściwości możliwe do powiązania:
Center
jest obiektem definiującymPosition
środek okręgu w szerokości geograficznej i długości geograficznej.Radius
toDistance
obiekt, który definiuje promień okręgu w metrach, kilometrach lub milach.FillColor
jest właściwościąColor
, która określa kolor w obwodzie okręgu.
Uwaga
Jeśli właściwość nie zostanie określona StrokeColor
, pociągnięcie będzie domyślnie czarne. FillColor
Jeśli właściwość nie zostanie określona, wypełnienie będzie domyślnie przezroczyste. W związku z tym, jeśli żadna z właściwości nie zostanie określona, kształt będzie miał kontur bez wypełnienia.
Tworzenie wielokąta
Polygon
Obiekt można dodać do mapy, tworząc wystąpienie obiektu i dodając go do kolekcji mapyMapElements
. Można to zrobić w języku XAML w następujący sposób:
<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>
Równoważny kod języka C# to:
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);
Właściwości StrokeColor
i StrokeWidth
są określone w celu dostosowania konturu wielokąta. Wartość właściwości jest zgodna FillColor
z StrokeColor
wartością właściwości, ale ma określoną wartość alfa, aby była przezroczysta, dzięki czemu mapa bazowa będzie widoczna przez kształt. Właściwość GeoPath
zawiera listę Position
obiektów definiujących współrzędne geograficzne punktów wielokątnych. Obiekt Polygon
jest renderowany na mapie po dodaniu go do MapElements
kolekcji obiektu Map
.
Uwaga
A Polygon
to w pełni zamknięty kształt. Pierwsze i ostatnie punkty zostaną automatycznie połączone, jeśli nie są zgodne.
Tworzenie wielolinii
Polyline
Obiekt można dodać do mapy, tworząc wystąpienie obiektu i dodając go do kolekcji mapyMapElements
. Można to zrobić w języku XAML w następujący sposób:
<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);
Właściwości StrokeColor
i StrokeWidth
są określone w celu dostosowania wiersza. Właściwość GeoPath
zawiera listę Position
obiektów definiujących współrzędne geograficzne punktów wieloliniowych. Obiekt Polyline
jest renderowany na mapie po dodaniu go do MapElements
kolekcji obiektu Map
.
Tworzenie okręgu
Circle
Obiekt można dodać do mapy, tworząc wystąpienie obiektu i dodając go do kolekcji mapyMapElements
. Można to zrobić w języku XAML w następujący sposób:
<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>
Równoważny kod języka C# to:
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);
Lokalizacja Circle
obiektu na mapie jest określana przez wartość Center
właściwości i Radius
. Właściwość Center
definiuje środek okręgu w szerokości geograficznej i długości geograficznej, podczas gdy Radius
właściwość definiuje promień okręgu w metrach. Właściwości StrokeColor
i StrokeWidth
są określone w celu dostosowania konspektu okręgu. Wartość FillColor
właściwości określa kolor w obwodzie okręgu. Obie wartości kolorów określają kanał alfa, dzięki czemu mapa bazowa będzie widoczna za pośrednictwem okręgu. Obiekt Circle
jest renderowany na mapie po dodaniu go do MapElements
kolekcji obiektu Map
.
Uwaga
Klasa GeographyUtils
ma metodę ToCircumferencePositions
rozszerzenia, która konwertuje Circle
obiekt (definiujący Center
i Radius
wartości właściwości) na listę Position
obiektów tworzących współrzędne szerokości i długości geograficznej obwodu okręgu.