我正在尝试将列表中的多个图钉添加到Windows Phone上的Bing地图。每个图钉的名称需要不同,因为我希望以后能够使用MainMap.Children.Remove(SpecificPushpin);
单独删除它们。
这是我的预言:
Pushpin pushpin = new Pushpin();
Attractions attractions = new Attractions();
foreach (var attraction in Attractions.allAttractions)
{
pushpin.GeoCoordinate = new GeoCoordinate(attraction.Latitude, attraction.Longtitude);
pushpin.Content = attraction.Title;
pushpin.Background = new SolidColorBrush(Colors.Blue);
pushpin.Foreground = new SolidColorBrush(Colors.White);
MainMap.Children.Add(pushpin);
}
当然,我在MainMap.Children.Add(pushpin);
行的第一个循环后收到错误,因为“pushpin”已经是现有名称。
我也试过用这个:
MainMap.Children.Add(new Pushpin() { Content = attraction.Title, GeoCoordinate = new GeoCoordinate(attraction.Latitude, attraction.Longtitude), Background = new SolidColorBrush(Colors.Yellow), Foreground = new SolidColorBrush(Colors.Black) });
然而,我永远无法单独推出图钉。
有谁知道我如何为列表中的每个图钉提供变量名称,或者知道另一种解决问题的方法?
答案 0 :(得分:1)
我没有使用Bing地图,而是使用地图控件并与MapLayers
和MapOverlay
合作。我为每个列表类创建了一个不同的MapLayer
并单独删除它们。
这样就可以简单地删除一个图钉列表。这是一个例子:
private void LoadAttractions()
{
if (cbxAttractions.IsChecked != false)
{
Attractions attractions = new Attractions();
foreach (var attraction in Attractions.allAttractions)
{
Pushpin pushpin = new Pushpin();
pushpin.Name = attraction.Title;
pushpin.GeoCoordinate = new GeoCoordinate(attraction.Latitude, attraction.Longtitude);
pushpin.Content = attraction.Title;
pushpin.Background = new SolidColorBrush(Colors.Yellow);
pushpin.Foreground = new SolidColorBrush(Colors.Black);
MapOverlay MyOverlay = new MapOverlay();
mapLayerAttractions.Add(MyOverlay);
MyOverlay.Content = pushpin;
MyOverlay.GeoCoordinate = new GeoCoordinate(attraction.Latitude, attraction.Longtitude);
MyOverlay.PositionOrigin = new Point(0.0, 1.0);
}
MainMap.Layers.Add(mapLayerAttractions);
}
}
点击cbxAttractions
时:
private void cbxAttractions_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
if (cbxAttractions.IsChecked == false)
{
MainMap.Layers.Remove(mapLayerAttractions);
}
else
{
LoadAttractions();
}
}
答案 1 :(得分:0)
您可以为每个Pushpin提供一个属性,例如:Tag。并且每个标签与另一个标签不同。所以当你删除一个特定的图钉。您可以像这样使用foreach:
foreach(PushPin pushpin in yourPushpinList)
{
if (pushpin.Tag == yourValue)
{
MainMap.Children.Remove(SpecificPushpin);
break;
}
}
代码可能不正确,这只是一个例子。