如何从 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();
几年前使用不同的 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();