C# 删除添加的图钉Windows Phone 8

C# 删除添加的图钉Windows Phone 8,c#,bing-maps,C#,Bing Maps,我刚刚使用Bing地图控件作为工具箱中的默认控件创建了一个新项目。 我使用下面的方法来创建一个新的图钉 void DrawMyLocationOverLay() { MapLayer layer1 = new MapLayer(); Pushpin pushpin1 = new Pushpin(); pushpin1.GeoCoordinate = myGeoCoordinate; pushpin1.Tag = "myLocation"; pushpin

我刚刚使用Bing地图控件作为工具箱中的默认控件创建了一个新项目。 我使用下面的方法来创建一个新的图钉

void DrawMyLocationOverLay()
{
    MapLayer layer1 = new MapLayer(); 
    Pushpin pushpin1 = new Pushpin();
    pushpin1.GeoCoordinate = myGeoCoordinate;
    pushpin1.Tag = "myLocation";
    pushpin1.Content = "My car"; 
    MapOverlay overlay1 = new MapOverlay(); 
    overlay1.Content = pushpin1;
    overlay1.GeoCoordinate = myGeoCoordinate; 
    layer1.Add(overlay1); 
    MyMap.Layers.Add(layer1);

}
当然,它是有效的

现在,如果位置发生变化,我将使用以下方法更新图钉

 private void GetCoordinate()
 {
     var watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High)
     {
         MovementThreshold = 2
     };

     watcher.PositionChanged += this.watcher_PositionChanged;
     watcher.Start();
 }

 private void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
 {
     myGeoCoordinate = new GeoCoordinate(e.Position.Location.Latitude, 
                                         e.Position.Location.Longitude);

     DrawMyLocationOverLay();
     // Problem here

 }
这将创建一个新的图钉,而不会删除先前在第一个方法中创建的图钉


有什么想法吗?

每次调用DrawMyLocationOverLay函数时,看起来您都在创建一个全新的MapLayer、图钉和MapOverlay。你不是真的只想移动图钉或者地图叠加吗,我说不清

在这种情况下,当您创建它们时,您会将它们存储在一个成员变量中。然后在您的watcher_处理程序中,您将更新它们,而不是创建新的

比如:

private MapLayer _MapLayer;
private Pushpin _Pushpin;
private MapOverlay _MapOverlay;

void InitialDraw()
{
    MapLayer _MapLayer = new MapLayer(); 
    Pushpin _Pushpin = new Pushpin();
    _Pushpin.GeoCoordinate = myGeoCoordinate;
    _Pushpin.Tag = "myLocation";
    _Pushpin.Content = "My car"; 
    MapOverlay _MapOverlay = new MapOverlay(); 
    _MapOverlay.Content = _Pushpin;
    _MapOverlay.GeoCoordinate = myGeoCoordinate; 
    _MapLayer.Add(_MapOverlay); 
    MyMap.Layers.Add(_MapLayer);
}

void DrawMyLocationOverLay()
{
    _Pushpin.GeoCoordinate = myGeoCoordinate;
    _MapOverlay.GeoCoordinate = myGeoCoordinate;
}

你能根据我的代码构建代码吗?我只想在创建的图钉位置更改时更新图钉。我的编辑应该让您开始。StackOverflow不是一个让别人为你写代码的网站。但这会让你朝着正确的方向前进。