Как связать значение позиции 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?

Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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

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