Xamarin.Forms.Map显示来自命令的管脚
我正在尝试使用MVVM模式。当命令执行时,我得到一个管脚列表。我的问题是如何在地图上添加图钉?如果在ClientMap()构造函数中定义,则管脚列表为空。有什么建议吗?在ViewModel中 获取管脚列表后调用以下代码Xamarin.Forms.Map显示来自命令的管脚,xamarin,xamarin.forms,xamarin.forms.maps,Xamarin,Xamarin.forms,Xamarin.forms.maps,我正在尝试使用MVVM模式。当命令执行时,我得到一个管脚列表。我的问题是如何在地图上添加图钉?如果在ClientMap()构造函数中定义,则管脚列表为空。有什么建议吗?在ViewModel中 获取管脚列表后调用以下代码 public partial class ClientMap: ContentPage { ClientCoordinateviewModel viewModel= new ClientCoordinateviewModel (); Client client
public partial class ClientMap: ContentPage
{
ClientCoordinateviewModel viewModel= new ClientCoordinateviewModel ();
Client client;
public ClientMap(Client selected_client)
{
Title = klient.Select_client_name;
InitializeComponent();
BindingContext = viewModel;
client= selected_client;
map = new Map(MapSpan.FromCenterAndRadius(new Position(37, -122), Distance.FromMiles(10)));
//Just a test pin
var pin = new Pin()
{
Position = new Position(37, -122),
Label = "Some Pin!"
};
map.Pins.Add(pin);
Content = map;
}
protected override void OnAppearing()
{
base.OnAppearing();
if (viewModel.CoordinateParnertPins.Count == 0)
{
viewModel.CommandGetCoordinatePins.Execute(client);
}
}
}
MessagingCenter.Send(这个“addPins”,PinList);//PinList是列表的类型
在内容页中
publicclientmap(客户端选择的\u客户端)
{
//...
地图=新地图(地图跨度从中心到半径(新位置(37,-122),距离从英里(10));
订阅(此“addPins”,(args,list)=>{
foreach(列表中的位置)
{
图.销.添加(位置);
}
});
内容=地图;
}
获取pin列表时,您可以使用消息中心发送消息。@LucasZhang MSFT我从API获取列表,并且在viewModel.ClietnPinsList中拥有所有pin,但由于请求是异步的,所以不要将pin添加到map@LucasZhang-MSFT第一个代码:``MessagingCenter.Send(这个是“addPins”,PinList);```在添加列表中的所有管脚后,我添加了异步任务函数?是的,您是对的。
MessagingCenter.Send<Object, List<Position>>(this, "addPins", PinList); // PinList is type of List<Position>
public ClientMap(Client selected_client)
{
//...
map = new Map(MapSpan.FromCenterAndRadius(new Position(37, -122), Distance.FromMiles(10)));
MessagingCenter.Subscribe<Object, List<Position>>(this, "addPins", (args,list) => {
foreach(Position position in list)
{
map.Pins.Add(position);
}
});
Content = map;
}