如何从 Bing 地图中删除所有现有图钉?

How can I delete all existing Pushpins from Bing Maps?

几年前使用不同的 version/flavor of Bing 地图,我问了同样的问题并最终自行发布了答案,here

但这不适用于我使用 WPF 控件的 Winforms 应用程序。使用此代码:

var mapLayerChildren = from c in DataLayer.Children select c;
var kinderGarten = mapLayerChildren.ToArray();
for (int i = 0; i < kinderGarten.Count(); i++)
{
    if (kinderGarten[i] is Pushpin)
    {
        DataLayer.Children.Remove(kinderGarten[i]);
    }
}

...无法识别 DataLayer

当我尝试用“userControl11.myMap.Children”替换“DataLayer”时,我得到了这个:

我需要做什么?

这取决于您添加图钉的方式。您需要将它们从添加它们的同一 Children 集合中移除。

假设您已经将图钉直接添加到地图的 Children 集合中,那么您可以找到所有图钉并像这样删除它们:

var map = this.userControl11.myMap;
map.Children.OfType<Pushpin>().ToList().ForEach(pin => {
    map.Children.Remove(pin);           
});

或者删除地图的所有子项,包括图钉、形状、图层等。您可以使用:

var map = this.userControl11.myMap;
map.Children.Clear();