如何设置某些图标而不是默认图钉?
How to set certain icon instead of default pins?
我正在尝试使用某些图标而不是地图上的默认 Xamarin.Forms 图钉。
所以我创建了继承 Pin 的 CustomisePin class。
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 中的注释行下是我尝试设置图钉图标的内容。
这里是视图的一部分,如果它因为绑定上下文很重要的话。
public partial class IrrigNetPage : ContentPage
{
public IrrigNetPage()
{
InitializeComponent();
BindingContext = new IrrigNetViewModel(MainMap);
}
}
我在 Google 上找到了一些示例,例如:
https://github.com/raechten/BindableMapTest
https://github.com/paulpatarinski/ShouldIWashMyCar
出于某种原因我无法 运行 他们,但我仍然尝试使用代码,无论我有什么 Pin 都是默认的,甚至不显示。
为 pin 设置特定图标的简单方法是什么?是否可以只用一些图标路径渲染它而不渲染地图(因为我看到很多人为自定义 pin 创建服装地图)。
此外,如果它对某些人很重要,我正在使用 MVVM 模式。
我正在尝试使用某些图标而不是地图上的默认 Xamarin.Forms 图钉。 所以我创建了继承 Pin 的 CustomisePin class。
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 中的注释行下是我尝试设置图钉图标的内容。
这里是视图的一部分,如果它因为绑定上下文很重要的话。
public partial class IrrigNetPage : ContentPage
{
public IrrigNetPage()
{
InitializeComponent();
BindingContext = new IrrigNetViewModel(MainMap);
}
}
我在 Google 上找到了一些示例,例如: https://github.com/raechten/BindableMapTest https://github.com/paulpatarinski/ShouldIWashMyCar
出于某种原因我无法 运行 他们,但我仍然尝试使用代码,无论我有什么 Pin 都是默认的,甚至不显示。
为 pin 设置特定图标的简单方法是什么?是否可以只用一些图标路径渲染它而不渲染地图(因为我看到很多人为自定义 pin 创建服装地图)。
此外,如果它对某些人很重要,我正在使用 MVVM 模式。