Как привязать расположение пина в MAUI ⇐ C#
-
Гость
Как привязать расположение пина в MAUI
Мне нужно закрепить булавку в центре экрана и разрешить перемещение по карте.
Я добавил карту и значок:
map = новая карта { IsShowingUser = правда, ВысотаЗапрос = Высота устройства, ШиринаЗапрос = Ширина устройства, }; карта.PropertyChanged += OnMapPropertyChanged; маркерПин = новый Пин { Тип = ТипПин.Место, Метка = "Выбрать местоположение", Местоположение = МаркерЛокация, }; маркерPin.SetBinding(Pin.LocationProperty, новая привязка(nameof(MarkerLocation))); map.Pins.Add(markerPin); Добавлено свойство MarkerLocation
private LocationmarkerLocation; общедоступное местоположение MarkerLocation { получать { вернуть маркерLocation; } набор { маркерлокация = значение; OnPropertyChanged("Местоположение Маркера"); } } И если свойство карты изменилось, обновите значение MarkerLocation:
private void OnMapPropertyChanged(отправитель объекта, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == "VisibleRegion" || e.PropertyName == "VisibleRegion.Center") { вар центр = карта.VisibleRegion.Center; MarkerLocation = центр; } } Когда я открываю страницу, я получаю исключение: «Java.Lang.IllegalArgumentException: 'latlng не может быть нулевым — требуется позиция.'». Я отследил это и обнаружил, что после инициализации контакта SetBinding установил «нулевое значение» для местоположения контакта. Если я напишу SetBinding до инициализации вывода, я получу статический вывод, который не перемещается, даже если свойство MarkerLocation меняет свое значение.
Мне нужно закрепить булавку в центре экрана и разрешить перемещение по карте.
Я добавил карту и значок:
map = новая карта { IsShowingUser = правда, ВысотаЗапрос = Высота устройства, ШиринаЗапрос = Ширина устройства, }; карта.PropertyChanged += OnMapPropertyChanged; маркерПин = новый Пин { Тип = ТипПин.Место, Метка = "Выбрать местоположение", Местоположение = МаркерЛокация, }; маркерPin.SetBinding(Pin.LocationProperty, новая привязка(nameof(MarkerLocation))); map.Pins.Add(markerPin); Добавлено свойство MarkerLocation
private LocationmarkerLocation; общедоступное местоположение MarkerLocation { получать { вернуть маркерLocation; } набор { маркерлокация = значение; OnPropertyChanged("Местоположение Маркера"); } } И если свойство карты изменилось, обновите значение MarkerLocation:
private void OnMapPropertyChanged(отправитель объекта, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == "VisibleRegion" || e.PropertyName == "VisibleRegion.Center") { вар центр = карта.VisibleRegion.Center; MarkerLocation = центр; } } Когда я открываю страницу, я получаю исключение: «Java.Lang.IllegalArgumentException: 'latlng не может быть нулевым — требуется позиция.'». Я отследил это и обнаружил, что после инициализации контакта SetBinding установил «нулевое значение» для местоположения контакта. Если я напишу SetBinding до инициализации вывода, я получу статический вывод, который не перемещается, даже если свойство MarkerLocation меняет свое значение.
Мобильная версия