我有一个像这样的模型类:
public class MapModel
{
public Field[] Fields { get; set; }
}
public class Field
{
public int Id { get; set; }
public string Name { get; set; }
public Node[] Nodes { get; set; }
public string Icon { get; set; }
}
public class Node
{
public float Long { get; set; }
public float Lat { get; set; }
}
在我的视图模型中,我正在调用服务以获取一些地图数据和ObservableCollection,例如:
public ObservableCollection<Field> FieldsCollection { get; set; } = new ObservableCollection<Field>();
var mapData = await MapService.GetMapData(token, "sr");
foreach (var md in mapData.Fields)
{
FieldsCollection.Add(md);
PinIcon = Icon;
}
现在我正在尝试从Node设置Long和Lat值,以指定Pin在地图上的位置...
public void LoadMapTab()
{
foreach (var item in FieldsCollection)
{
var pin = new Pin
{
Label = item.Name,
Position = new Position(/* SET VALUES FROM NODE LONG AND LAT*/),
Icon = BitmapDescriptorFactory.FromBundle(PinIcon)
};
_map.Pins.Add(pin);
Device.StartTimer(TimeSpan.FromMilliseconds(500), () =>
{
_map.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(/* SET VALUES FROM NODE LONG AND LAT*/),
Distance.FromKilometers(8)));
return false;
});
}
}
所以,我的问题是如何访问Long
和Lat
值并将其设置为
Position = new Position(.......)
答案 0 :(得分:0)
item是Field
,所以它有一个Nodes
数组。您可以使用indexer []
在数组中指定索引
Position = new Position(item.Nodes[0].Lat, item.Nodes[0].Long),
请注意,attribtute
在C#中具有特定含义。这些是properties
,而不是attributes