Как отобразить карту и отметить местоположение в формах Xamarin

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

вы читали документы - это широко освещено. См. learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interfa‌​ce/…

Jason 14.12.2020 15:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
667
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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: геолокация

Обновлять:

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

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

Я пытаюсь добавить высоту на свою карту, используя следующий код: `<maps:Map.HeightRequest> <OnIdiom x:TypeArguments = "x:Double"> <OnIdiom.Phone>100</OnIdiom.Phone> <OnIdiom.Tablet> 150</OnIdiom.Tablet> <OnIdiom.Desktop>100</OnIdiom.Desktop> </OnIdiom> </maps:Map.HeightRequest> ` но этот код у меня не работает.

Shreya 15.12.2020 14:26

Одновременно добавьте VerticalOptions = "Start" HorizontalOptions = "Start". Смотрите мой обновленный ответ.

nevermore 16.12.2020 03:08

@Shreya Мое решение работает для вас? Если да, не могли бы вы принять его (нажмите ☑️ в верхнем левом углу этого ответа), чтобы мы могли помочь большему количеству людей с такой же проблемой :).

nevermore 16.12.2020 03:09

Как связать координаты карты внутри списка? Я пробовал это, но у меня это не работает. <maps:Map x:Name = "maps" VerticalOptions = "Start" HorizontalOptions = "End" Margin = "0,10,10,0" MapClicked = "maps_MapClicked" > <x:Arguments> <maps:MapSpan> <x :Arguments> <maps:Position> <x:Arguments> <x:Double>{Широта привязки}</x:Double> <x:Double>{Долгота привязки}</x:Double> </x:Arguments> < /maps:Position> <x:Double>0,01</x:Double> <x:Double>0,01</x:Double> </x:Arguments> </maps:MapSpan> </x:Arguments> </maps :Карта>

Shreya 17.12.2020 13:57

Другие вопросы по теме