2014-07-22 94 views
0

我刚刚创建了一个使用Bing地图控件的新项目(作为工具箱中的默认项目)。 我用下面的方法来创建新的图钉删除添加的图钉Windows Phone 8

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); 

} 

Ofcourse,它的工作原理。

而现在,我使用下面的方法来更新图钉,如果位置发生改变,

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 

} 

这将创建一个新的图钉,而不是删除图钉创建较早(在第一种方法创建图钉)

有任何想法吗 ?

回答

0

看起来您每次拨打DrawMyLocationOverLay函数时都会创建一个全新的MapLayerPushpinMapOverlay。难道你不是真的只想移动Pushpin(或者只是MapOverlay,我不太清楚)?

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

喜欢的东西:

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; 
} 
+0

你能在我的代码建立的代码库? 我只是想更新我的图钉时,创建图钉的位置改变 – user2165201

+0

我的编辑应该让你开始。 StackOverflow不是让某人为您编写代码的网站。但是这应该让你走向正确的方向。 – Tim

+0

好吧,我明白了:) 非常感谢你! – user2165201