public SpecialPointLayer GetLayer(double scale) { var images = _source.Get(scale); var locatables = new List <Locateable>(); foreach (var imageGroup in images) { var locatable = new Locateable(); locatable.AncherFunction = AncherFunctionHandlers.CenterCenter; locatable.X = imageGroup.Center.MercatorLocation.X; locatable.Y = imageGroup.Center.MercatorLocation.Y; //locatable.Element = new Common.View.MapMarkers.CountableImageMarker(imageSymbol, imageGroup.Frequency.ToString()); locatable.Element = _viewMaker(imageGroup.Frequency.ToString()); locatable.OnRequestHandleMouseDown += (sender, e) => { this.OnRequestMouseDownHandle.SafeInvoke(imageGroup); }; locatables.Add(locatable); } return(new SpecialPointLayer(LayerName, locatables)); }
private void Remove(Locateable mainLocateable) { if (_mainLocateables.Count <= 2) { return; } var index = _mainLocateables.IndexOf(mainLocateable); if (index > 0) { _controlLocateables.RemoveAt(2 * index - 1); _controlLayer.Items.RemoveAt(2 * index - 1); if (index == _mainLocateables.Count - 1) { _controlLocateables.RemoveAt(2 * index - 2); _controlLayer.Items.RemoveAt(2 * index - 2); } else { _controlLocateables.RemoveAt(2 * index - 1); _controlLayer.Items.RemoveAt(2 * index - 1); } } else { _controlLocateables.RemoveAt(0); _controlLocateables.RemoveAt(0); _controlLayer.Items.RemoveAt(0); _controlLayer.Items.RemoveAt(0); } _mainLocateables.Remove(mainLocateable); _mainLayer.Items.Remove(mainLocateable); mercatorPolyline.RemoveAt(index); Refresh(); }
private void Add(Locateable mainLocateable) { var index = _mainLocateables.IndexOf(mainLocateable); if (index == 0) { return; } var point = new Ham.SpatialBase.Point((mainLocateable.X + _mainLocateables[index - 1].X) / 2.0, (mainLocateable.Y + _mainLocateables[index - 1].Y) / 2.0); var newMainLocateable = AsLocateable(point, Colors.Green); newMainLocateable.OnPositionChanged += mainLocateable_OnPositionChanged; newMainLocateable.Element.MouseRightButtonDown += (sender, e) => { mainElement_MouseRightButtonDown(newMainLocateable, e); }; var newControl1 = AsLocateable(point, Colors.Gray); newControl1.OnPositionChanged += controlLocateable_OnPositionChanged; var newControl2 = AsLocateable(point, Colors.Gray); newControl2.OnPositionChanged += controlLocateable_OnPositionChanged; _mainLocateables.Insert(index, newMainLocateable); mercatorPolyline.Insert(index, point); _controlLocateables.Insert(2 * index - 1, newControl2); _controlLocateables.Insert(2 * index - 1, newControl1); Refresh(); }