Я хочу отобразить карту с текущим местоположением, а также нарисовать булавку на текущем местоположении на карте. Я также хочу провести черту, если есть несколько мест. Какой лучший вариант для ...

1
Shreya 14 Дек 2020 в 17:42

1 ответ

Лучший ответ

Вы можете выполнить это требование, используя Xamarin.forms.Maps.

отобразить карту с текущим местоположением

Чтобы отобразить карту:

Следуйте инструкциям по Инициализации карты Xamarin.Forms и Конфигурация, а затем вы можете отобразить элемент управления картой:

<ContentPage ...
             xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps">
    <maps:Map x:Name="map" />
</ContentPage>

Вы также можете отобразить конкретное местоположение на карте, чтобы показать ваше текущее местоположение.

нарисуйте булавку в текущем местоположении на карте.

Чтобы нарисовать булавку:

Pin pin = new Pin
{
  Label = "Santa Cruz",
  Address = "The city with a boardwalk",
  Type = PinType.Place,
  Position = new Position(36.9628066, -122.0194722)
};
map.Pins.Add(pin);

проведите линию, если есть несколько мест

Нарисовать полилинию:

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);

Чтобы узнать текущее местоположение:

Вы можете использовать Xamarin.Essentials: Geolocation

Обновление :

Для компоновки карты:

<maps:Map x:Name="map" VerticalOptions="Start" HorizontalOptions="Start" BackgroundColor="Red" >
    
    <maps:Map.HeightRequest>
        <OnIdiom x:TypeArguments="x:Double" Phone="100" Tablet="150" Desktop="100"/>
    </maps:Map.HeightRequest>

</maps:Map>
2
Jack Hua 16 Дек 2020 в 02:08