void item_MarkCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
GraphicsLayer graphicsLayer = sender as GraphicsLayer;
if (graphicsLayer != null && _layerMapOverlay.ContainsKey(graphicsLayer.ID))
{
GMapOverlay overlay = _layerMapOverlay[graphicsLayer.ID].GMapOverlay;
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add && e.NewItems != null)
{
List<Marker> markers = new List<Marker>();
foreach (Marker item in e.NewItems)
{
markers.Add(item);
}
this.AddMarker(graphicsLayer, overlay, markers);
}
else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove && e.OldItems != null)
{
foreach (Marker item in e.OldItems)
{
if (item != null)
{
overlay.Markers.Remove(_markerMapGMapMarker[graphicsLayer.ID][item.ID].GMapMarker);
_markerMapGMapMarker[graphicsLayer.ID].Remove(item.ID);
}
}
}
else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Reset)
{
overlay.Markers.Clear();
if (_markerMapGMapMarker.ContainsKey(graphicsLayer.ID))
{
_markerMapGMapMarker[graphicsLayer.ID].Clear();
}
}
}
}