Я хочу отобразить карту с текущим местоположением, а также нарисовать булавку в текущем местоположении на карте. Я также хочу нарисовать линию, если есть несколько мест. Какой лучший вариант для этого в формах xamarin?
Вы можете выполнить это требование, используя 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> ` но этот код у меня не работает.
Одновременно добавьте VerticalOptions = "Start" HorizontalOptions = "Start". Смотрите мой обновленный ответ.
@Shreya Мое решение работает для вас? Если да, не могли бы вы принять его (нажмите ☑️ в верхнем левом углу этого ответа), чтобы мы могли помочь большему количеству людей с такой же проблемой :).
Как связать координаты карты внутри списка? Я пробовал это, но у меня это не работает. <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 :Карта>
вы читали документы - это широко освещено. См. learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/…