Как связать значение позиции Xamarin.forms.Maps внутри ListView?

Я использую 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?

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
843
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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/05qS4.png

Sreejith Sree 21.12.2020 12:48

Как добавить ярлык в пин? i.stack.imgur.com/RlzPJ.png

Sreejith Sree 21.12.2020 13:22

Проверьте learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interfa‌​ce/…

Lucas Zhang 21.12.2020 13:25

попробовал так, карта по умолчанию показывает страну Рим. Когда я прокручиваю вниз и возвращаюсь, он возвращается в Ниджерию <maps:Map.ItemTemplate> <DataTemplate> <maps:Pin Position = "{Binding Position}" Label = ""/> </DataTemplate> </maps:Map .ItemTemplate>

Sreejith Sree 21.12.2020 13:53

Не указывает на координаты, которые нам дали в списке

Sreejith Sree 21.12.2020 13:57

Поделитесь своим проектом, я проверю.

Lucas Zhang 21.12.2020 14:05

Дайте мне немного времени, я поделюсь

Sreejith Sree 21.12.2020 14:34

Я загрузил пример проекта здесь, не могли бы вы проверить это? drive.google.com/file/d/15m7-X2itSn8Nn9AbPDqDMQ7Ov9vnvGdE/…

Sreejith Sree 22.12.2020 08:24

Моя проблема в том, что карта внутри списка не указывает на координаты, которые я дал, она указывает куда-то в Рим. Я указал места из США, Токио, Найроби и Берлина. Также, если я прокручиваю список, местоположение Рима изменяется и показывает местоположение Ниджерии.

Sreejith Sree 22.12.2020 08:27

Также я добавил карту за пределами списка, и функции булавки и линии работают на ней нормально.

Sreejith Sree 22.12.2020 08:28

Давайте продолжим обсуждение в чате.

Lucas Zhang 22.12.2020 09:02

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