2014-07-22 91 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