Как установить определенный значок вместо пинов по умолчанию? - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь использовать определенный значок вместо пинов Xamarin.Forms по умолчанию на карте. Поэтому я создал класс CustomisePin, который наследует Pin.

using Xamarin.Forms.Maps;
namespace agroNet.Tools
{
    public class CustomPin : Pin
    {
        public string PinIcon { get; set; }
    }
}

Вот что я попробовал в моей ViewModel

private Map _map;

        public IrrigNetViewModel(Map map)
        {
            dialog = UserDialogs.Instance.Loading(AppResource.LocalizationResource.Loading);        
            TabTappedCommand = new Command((tabName) => OnTapClicked(tabName.ToString()));
            HideListOnTapCommand = new Command(HideListOnTap);
            _map = map;
            GetData();
        }

А вот способ установки пинов на позиции.

public void LoadMapTab()
        {

            //var irrigNetPins = new List<CustomPin>();

            foreach (var item in IrrigNetCollection)
            {
                //var pins = new CustomPin
                //{
                //    Label = item.StationName,
                //    Position = new Position(item.StationLatitude, item.StationLongitude),
                //    PinIcon = "satellite.png"
                //};

                _map.Pins.Add(new CustomPin
                {
                    Label = item.StationName,
                    Position = new Position(item.StationLatitude, item.StationLongitude),
                    //PinIcon = P
                });
                _map.MoveToRegion(
                    MapSpan.FromCenterAndRadius(new Position(item.StationLatitude, item.StationLongitude),
                    Distance.FromKilometers(30)));

                //irrigNetPins.Add(pins);
            }

            //return irrigNetPins;
        }

В LoadMapTab под строками комментариев я пытался установить значок булавки.

А вот часть View, если она важна из-за Binding Context.

public partial class IrrigNetPage : ContentPage
    {

        public IrrigNetPage()
        {
            InitializeComponent();
            BindingContext = new IrrigNetViewModel(MainMap);
        }
    }

Я нашел несколько примеров в Google, например: https://github.com/raechten/BindableMapTest https://github.com/paulpatarinski/ShouldIWashMyCar

По какой-то причине я не могу запустить их, но все же я пытался использовать код, и независимо от того, какой у меня Пин, по умолчанию, или даже не показывать.

Что представляет собой простой способ установить определенный значок для булавки и позволяет ли он рендерить его просто с некоторым путем к значку без рендеринга карты (поскольку я видел, как многие создавали карту стоимости для настраиваемых пинов).

Также, если для кого-то важно, я использую паттерн MVVM.

1 Ответ

0 голосов
/ 05 июня 2019

Официальный образец и документация Xamarin устарели. Я изменил официальный образец Custom Pin для использования пользовательских контактов в iOS и Android. Проект размещен на GitHub .

Сообщается о проблеме с официальным образцом более здесь .

...