Я использую Xamarin.forms.Maps
для отображения карты в моем проекте. Карта находится внутри ListView
, и мне нужно привязать позиции координат к карте.
Класс модели:
public class History
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
Часть добавления данных:
historyList.Add(new History() { Latitude= -28.854930 ,Longitude= 151.166023 });
historyList.Add(new History() { Latitude = -28.853671, Longitude = 151.165712 });
historyList.Add(new History() { Latitude = -28.853934, Longitude = 151.167118 });
historyList.Add(new History() { Latitude = -28.855178, Longitude = 151.167946 });
historylistview.ItemsSource = historyList;
XAML
<ListView x:Name = "historylistview">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout
HorizontalOptions = "Center">
<maps:Map
x:Name = "maps"
VerticalOptions = "Center"
HorizontalOptions = "Center">
<x:Arguments>
<maps:MapSpan>
<x:Arguments>
<maps:Position>
<x:Arguments>
<x:Double>{Binding Latitude}</x:Double>
<x:Double>{Binding Longitude}</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:Map>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Карта отображается в каждой строке, но значение позиции неверно. Я дал местоположение из Техаса, но карта показывает где-то в Нижней.
Можно ли сделать привязку для типа x:Arguments
?
MapSpan и Position in Map не являются привязываемыми свойствами, поэтому они никогда не будут работать, если вы используете привязку данных.
Если вы хотите отобразить список позиций
<ListView x:Name = "historylistview">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout
HorizontalOptions = "Center">
<maps:Map x:Name = "map"
ItemsSource = "{Binding positionList}">
<maps:Map.ItemTemplate>
<DataTemplate>
<maps:Pin Position = "{Binding .}"/>
</DataTemplate>
</maps:Map.ItemTemplate>
</maps:Map>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
historyList.Add(new History() { positionList = new ObservableCollection<Position>() { new Position(36.9628066, -122.0194722) },xxx = "title here" });
historyList.Add(new History() { positionList = new ObservableCollection<Position>() { new Position(36.9628066, -122.0194722) }, xxx = "title here" });
//...
historylistview.ItemsSource = historyList;
public class History
{
public ObservableCollection<Position> positionList { get; set; }
//other property
public string xxx { get; set; }
}
Проверьте документы для более подробной информации
Как добавить ярлык в пин? i.stack.imgur.com/RlzPJ.png
Проверьте learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/…
попробовал так, карта по умолчанию показывает страну Рим. Когда я прокручиваю вниз и возвращаюсь, он возвращается в Ниджерию <maps:Map.ItemTemplate> <DataTemplate> <maps:Pin Position = "{Binding Position}" Label = ""/> </DataTemplate> </maps:Map .ItemTemplate>
Не указывает на координаты, которые нам дали в списке
Поделитесь своим проектом, я проверю.
Дайте мне немного времени, я поделюсь
Я загрузил пример проекта здесь, не могли бы вы проверить это? drive.google.com/file/d/15m7-X2itSn8Nn9AbPDqDMQ7Ov9vnvGdE/…
Моя проблема в том, что карта внутри списка не указывает на координаты, которые я дал, она указывает куда-то в Рим. Я указал места из США, Токио, Найроби и Берлина. Также, если я прокручиваю список, местоположение Рима изменяется и показывает местоположение Ниджерии.
Также я добавил карту за пределами списка, и функции булавки и линии работают на ней нормально.
Давайте продолжим обсуждение в чате.
Где список в вашем ответе? Я пытаюсь показать список элементов, и в каждой строке у меня есть карта. Кроме того, в каждой строке есть некоторые другие детали. Поэтому мне нужен список здесь. i.stack.imgur.com/05qS4.png