Udostępnij za pośrednictwem


Xamarin.Forms Mapuj wielokąty i linie wielokątne

Polygon, Polylinei 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, Polylinei Circle pochodzą z MapElement klasy, która uwidacznia następujące powiązane właściwości:

  • StrokeColor jest obiektem określającym Color kolor linii.
  • StrokeWidth jest obiektem określającym float szerokość linii.

Klasa Polygon definiuje dodatkową właściwość powiązaną:

  • FillColorColor 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ącym Position środek okręgu w szerokości geograficznej i długości geograficznej.
  • Radius to Distance 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ł czarny 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.