我正在尝试使用某些图标代替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模式。