所以我需要将两个独立的引脚分组,因为当我过滤它们时,我需要知道哪些引脚属于哪个类别。
这就是我收到它们的方式。因此,如果int app.value1为0,则加载一个组,如果app.value2为0,则加载另一个组。
我需要将它们分开的原因是因为我正在做一个过滤器,我需要将它们分开。我应该做两个不同的清单吗?或者有更好的方法吗?
List<Pin> myPins = new List<Pin>();
private async Task<List<Pin>> LoadData()
{
var pins = new List<Pin> ();
var getItems = await phpApi.getInfo ();
foreach (var currentItem in getItems["results"]) {
longString = currentItem ["long"].ToString ();
latString = currentItem ["lat"].ToString ();
if (App.value1 == 0) { //so this below is the first group of pins then
var pin = new Pin ();
pin.Position = new Position (latString, longString);
pin.Label = "testlabel";
pin.Address = "testadress";
pins.Add (pin);
}
if (App.value2 == 0) { //second group of pins
//i add pins here as well (so the same code as App.value1), but this intvalue is connected to a different "button"
pins.Add (pin);
}
}
}
这是我的过滤器现在无法正常工作,因为该引脚不知道属于哪个组:
private async void FilterPins (string filter)
{
map.Pins.Clear ();
foreach(Pin p in myPins) {
if (string.IsNullOrWhiteSpace(filter) || (p.Label.Contains(filter))) {
map.Pins.Add (p); //this is just a searchfilter via my searchbar that isnt working when I add the code below. If i remove the code below this function works.
}
if (App.value1 == 0 ) {
map.Pins.Add (p);
System.Diagnostics.Debug.WriteLine ("add");
}
if (App.value2 == 0 ) {
map.Pins.Add (p);
System.Diagnostics.Debug.WriteLine ("add");
}
}
}
答案 0 :(得分:0)
由于Pin
课程为sealed
(https://developer.xamarin.com/api/type/Xamarin.Forms.Maps.Pin/),因此有点难以解决。但是,您应该可以创建两个单独的List<Pin>
,您可以根据过滤器将相应的Pin
对象放入其中。然后,您可以将相应的Map.Pins
对象与您需要显示的Pin
对象列表进行交换。
https://developer.xamarin.com/api/property/Xamarin.Forms.Maps.Map.Pins/
否则,您可以创建另一个POCO
对象,其中包含Pin
个对象和string Category
。
EX:
public class PinWithCategory
{
public Pin Pin {get; set;}
public string Category {get; set;}
}