public bool AllHitTest(Geometry.Extent2D extent) { bool flag = false; if (HitTestMultiResult.Count != 0) { HitTestMultiResult.Clear(); } var layers = Enumerable.Reverse(Layers).ToList(); // test from top layers foreach (MapLayer layer in layers) { if (layer.Visibility == Visibility.Visible) { Dictionary <Feature, VectorLayer> tempResult = layer.AllHitTest(extent); if (tempResult.Count != 0) { flag = true; foreach (var element in tempResult) { HitTestMultiResult.Add(element.Key, element.Value); } } } } return(flag); }
public override void MouseLDownHandler(object sender, MouseButtonEventArgs e) { if (_isDragging == false) { _isDragging = true; _mouseDownOrigin = MapControl.Current.GetWorldCoord(e.GetPosition(MapControl.Current)); return; } _mouseDownEnd = MapControl.Current.GetWorldCoord(e.GetPosition(MapControl.Current)); var extent = new Geometry.Extent2D(_mouseDownOrigin, _mouseDownEnd); bool success = IsWindow ? MapControl.Current.AllHitTest(extent) : MapControl.Current.PartHitTest(extent); if (success) { if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) // mod 20120810 { SelectionSet.SubtractSelection(MapControl.Current.HitTestMultiResult.Select(x => x.Key).ToArray()); } else { SelectionSet.AddSelection(MapControl.Current.HitTestMultiResult.Select(x => x.Key).ToArray()); // mod 20120725 } } else { //SelectionSet.ClearSelection(); } _isDragging = false; _selRect.Visibility = Visibility.Collapsed; }
public Geometry.Extent2D GetExtents() { Geometry.Extent2D result = Geometry.Extent2D.Null; foreach (VectorLayer layer in Layers) { result.Add(layer.GetExtents()); } return(result.Area == 0 ? new Geometry.Extent2D(0, 0, 1000, 1000) : result); // mod 20140628 }
public Geometry.Extent2D GetExtents() { Geometry.Extent2D result = Geometry.Extent2D.Null; foreach (VectorLayer layer in Layers) { result.Add(layer.GetExtents()); } return(result); }
/// <summary> /// 设置SVG属性:宽度、高度、viewBox /// </summary> /// <param name="width"></param> /// <param name="height"></param> /// <param name="viewBox"></param> public void SetSvgAttributes(string width = null, string height = null, Geometry.Extent2D viewBox = null) // newly 20130507 { _root.SetAttributeValue("width", width); _root.SetAttributeValue("height", height); if (viewBox != null) { _root.SetAttributeValue("viewBox", string.Format("{0:0.##} {1:0.##} {2:0.##} {3:0.##}", viewBox.min.x, viewBox.min.y, viewBox.XRange, viewBox.YRange)); } }
public Geometry.Extent2D GetExtents() { Geometry.Extent2D result = Geometry.Extent2D.Null; foreach (var feature in Features) { Geometry.Point2DString poly = new Geometry.Point2DString(feature.GeoData); result.Add(poly.GetExtent()); } return(result); }
public void LocateCanvas(Geometry.Point2D location) { double ext = 500; Geometry.Point2D pt1 = new Geometry.Point2D(location.x + ext, location.y + ext); Geometry.Point2D pt2 = new Geometry.Point2D(location.x - ext, location.y - ext); Geometry.Extent2D extent = new Geometry.Extent2D(pt2, pt1); this.Zoom(extent); }
public override void MouseLUpHandler(object sender, MouseButtonEventArgs e) { if (_isStarted == false) { if (_isMoving == true) { Extents = new Geometry.Extent2D(_mouseDownOrigin, _mouseDownEnd); Picked = true; _isMoving = false; } _rect.Visibility = Visibility.Collapsed; _isDragging = false; } }
public Dictionary <Feature, VectorLayer> PartHitTest(Geometry.Extent2D extent) { Dictionary <Feature, VectorLayer> multiResult = new Dictionary <Feature, VectorLayer>(); if (LayerData.GeoType == "1") { foreach (Feature f in LayerData.Features) { Geometry.Point2D p = new Geometry.Point2D(f.GeoData); if (extent.IsPointIn(p)) { multiResult.Add(f, LayerData); } } } else if (LayerData.GeoType == "2") { foreach (Feature f in LayerData.Features) { Geometry.Polyline poly = new Geometry.Polyline(f.GeoData); foreach (var point in poly.Points) { if (extent.IsPointIn(point)) { multiResult.Add(f, LayerData); break; } } } } else if (LayerData.GeoType == "4") { foreach (Feature f in LayerData.Features) { Geometry.Polygon poly = new Geometry.Polygon(f.GeoData); foreach (var point in poly.Points) { if (extent.IsPointIn(point)) { multiResult.Add(f, LayerData); break; } } } } return(multiResult); }
public override void MouseLUpHandler(object sender, MouseButtonEventArgs e) { if (_isStarted == false) { if (_isMoving == true) { TongJi.Geometry.Point2D pt1 = MapControl.Current.GetWorldCoord(_mouseDownOrigin); TongJi.Geometry.Point2D pt2 = MapControl.Current.GetWorldCoord(_mouseDownEnd); var extent = new Geometry.Extent2D(pt1, pt2); MapControl.Current.Zoom(extent); _isMoving = false; } MapControl.Current.Children.Remove(currentRect); currentRect.Visibility = Visibility.Collapsed; _isDragging = false; } }
private void SetSvgCanvas(SvgWriter writer, Geometry.Extent2D extents, int width, int height) { if (width <= 0 && height <= 0) { width = 1600; } var aspectRatio = extents.XRange / extents.YRange; if (width == 0) { width = (int)(height * aspectRatio); } else if (height == 0) { height = (int)(width / aspectRatio); } writer.SetSvgAttributes(width + "px", height + "px"); //, extents); _calcx = TongJi.Maths.LinearFunction(extents.min.x, 0, extents.max.x, width); _calcy = TongJi.Maths.LinearFunction(extents.min.y, height, extents.max.y, 0); _scale = x => width / (extents.max.x - extents.min.x) * x; }
public List <MapFile> GetFilesByExtents(Geometry.Extent2D extents) { return(MapFiles.Where(x => x.Extents.IsCrossedBy(extents)).ToList()); }
public XElement FindAndEncode(Geometry.Extent2D extents) { return(Encode(SpatialFind(Features, extents))); }
public static IEnumerable <FeatureCache> SpatialFind(IEnumerable <FeatureCache> features, Geometry.Extent2D extents) { return(features.Where(x => x.Extents.IsCrossedBy(extents))); }
public SvgMapRenderer(Map map, Config.MapConfig config) { _map = map; _mapConfig = config; _extents = map.GetExtents(); }
public void Zoom(Geometry.Extent2D extents) { Scale = Math.Max(extents.XRange / this.ActualWidth, extents.YRange / this.ActualHeight); Origin = new Point(this.ActualWidth / 2 - extents.Center.x / Scale, this.ActualHeight / 2 + extents.Center.y / Scale); this.RenderLayers(true); }