如何设置某些图标而不是默认图钉?

时间:2019-05-29 14:06:30

标签: xamarin.forms rendering xamarin.forms.maps

我正在尝试使用某些图标代替Map上的默认Xamarin.Forms引脚。 因此,我创建了继承Pin的CustomisePin类。

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的一部分。

public partial class IrrigNetPage : ContentPage
    {

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

我在Google上找到了一些示例,例如: https://github.com/raechten/BindableMapTest https://github.com/paulpatarinski/ShouldIWashMyCar

出于某种原因,我无法进行事件运行,但无论如何,我仍然尝试使用代码,并且Pin一直是默认值,甚至不显示。

设置销钉图标的简单方法是什么,并且仅通过指向图标的某些路径就可以渲染它而无需渲染地图,这很容易(因为我看到很多人为定制的销钉创建了服装地图)。

如果对某件事很重要,我正在使用MVVM模式。

1 个答案:

答案 0 :(得分:0)

Xamarin官方样本和文档已过时。我修改了官方的“自定义图钉”示例,以便在iOS和Android中使用自定义图钉。该项目托管在GitHub上。

报告了有关here上的官方样本的问题。