private Locateable AsLocateable(Point webMercatorPoint, Color color) { return(new Locateable(MapProjects.WebMercatorToGeodeticWgs84(webMercatorPoint)) { Element = new Circle(1, new SolidColorBrush(color)) }); }
private void RegisterMapOptionsForVertices(MouseButtonEventArgs e, IPoint point, Locateable locateable) { var presenter = new Jab.Common.Presenters.MapOptions.MapOptionsPresenter( rightToolTip: _copy, leftToolTip: _displayCoordinates, middleToolTip: _delete, rightSymbol: IRI.Jab.Common.Assets.ShapeStrings.Appbar.appbarPageCopy, leftSymbol: IRI.Jab.Common.Assets.ShapeStrings.CustomShapes.xY, middleSymbol: IRI.Jab.Common.Assets.ShapeStrings.Appbar.appbarDelete); presenter.RightCommandAction = i => { var geodetic = MapProjects.WebMercatorToGeodeticWgs84(presenter.Location); Clipboard.SetDataObject($"{geodetic.X.ToString("n4")},{geodetic.Y.ToString("n4")}"); this.RemoveMapOptions(); }; presenter.LeftCommandAction = i => { //RequestFinishEditing?.Invoke(this._mercatorGeometry); if (_primaryVerticesLabelLayer.Items.Any(l => l.Id == locateable.Id)) { _primaryVerticesLabelLayer.Remove(locateable.Id); } else { var element = new View.MapMarkers.CoordinateMarker(locateable.X, locateable.Y); var auxLocateable = new Locateable(Model.AncherFunctionHandlers.CenterLeft) { Element = element, X = point.X, Y = point.Y, Id = locateable.Id }; _primaryVerticesLabelLayer.Items.Add(auxLocateable); } this.RemoveMapOptions(); }; presenter.MiddleCommandAction = i => { this._primaryVerticesLabelLayer.Remove(locateable.Id); TryDeleteVertex(point, this._webMercatorGeometry, _webMercatorGeometry.Type == GeometryType.Polygon); this.RequestRefresh?.Invoke(this); this.RemoveMapOptions(); }; RequestRightClickOptions?.Invoke(new View.MapOptions.MapThreeOptions(false), e, presenter); }
private void CopyCurrentPointCoordinateToClipboard() { var currentPoint = this._primaryVerticesLayer.FindSelectedLocatable(); if (currentPoint == null) { return; } var geodetic = MapProjects.WebMercatorToGeodeticWgs84(new Point(currentPoint.X, currentPoint.Y)); Clipboard.SetDataObject($"{geodetic.X.ToString("n4")},{geodetic.Y.ToString("n4")}"); }
public async Task <GeoReferencedImage> GetTile(BoundingBox mbb, double mapScale) { WiseWebClient client = new WiseWebClient(50); var center = MapProjects.WebMercatorToGeodeticWgs84(mbb.Center); var zoom = IRI.Ham.SpatialBase.Mapping.WebMercatorUtility.GetZoomLevel(mapScale); var url = $@"https://maps.googleapis.com/maps/api/staticmap?center={center.Y},{center.X}&zoom={zoom}&size=256x256&maptype=roadmap&key=AIzaSyASDX3dnoItXvimcgmsfNgw3J2piODjx9E"; var byteImage = await client.DownloadDataTaskAsync(url); return(new GeoReferencedImage(byteImage, mbb.Transform(MapProjects.WebMercatorToGeodeticWgs84))); }
private Locateable ToEdgeLengthLocatable(Point first, Point second) { Func <Point, Point> toGeodeticWgs84 = p => MapProjects.WebMercatorToGeodeticWgs84(p); var edge = new LineSegment <Point>(first, second); var element = new View.MapMarkers.RectangleLabelMarker(edge.GetLengthLabel(toGeodeticWgs84)); //var offset = _screenToMap(15); return(new Locateable(Model.AncherFunctionHandlers.BottomCenter) { Element = element, X = edge.Middle.X, Y = edge.Middle.Y }); }
private void mainElement_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { var mainLocateable = sender as Locateable; var presenter = new Jab.Common.Presenters.MapOptions.MapOptionsPresenter( rightToolTip: string.Empty, leftToolTip: string.Empty, middleToolTip: string.Empty, rightSymbol: IRI.Jab.Common.Assets.ShapeStrings.Appbar.appbarClipboard, leftSymbol: IRI.Jab.Common.Assets.ShapeStrings.Appbar.appbarAdd, middleSymbol: IRI.Jab.Common.Assets.ShapeStrings.Appbar.appbarDelete); presenter.RightCommandAction = i => { var geodetic = MapProjects.WebMercatorToGeodeticWgs84(mainLocateable.Location.AsPoint()); System.Windows.Clipboard.SetDataObject($"{geodetic.X.ToString("n4")},{geodetic.Y.ToString("n4")}"); this.RemoveMapOptions(); }; presenter.LeftCommandAction = i => { Add(mainLocateable); this.RemoveMapOptions(); }; presenter.MiddleCommandAction = i => { //delete mainlocateable Remove(mainLocateable); this.RemoveMapOptions(); }; if (RequestRightClickOptions != null) { RequestRightClickOptions(new View.MapOptions.MapThreeOptions(), e, presenter); } }
public static List <TileInfo> WebMercatorBoundingBoxToGoogleTileRegions(BoundingBox webMercatorBoundingBox, int zoomLevel) { var geographicBoundingBox = webMercatorBoundingBox.Transform(i => MapProjects.WebMercatorToGeodeticWgs84(i)); return(GeodeticBoundingBoxToGoogleTileRegions(geographicBoundingBox, zoomLevel)); }
public static void WriteWebMercatorBoundingBoxToGoogleTileRegionsAsShapefile(string fileName, BoundingBox webMercatorBoundingBox, int zoomLevel) { var geographicBoundingBox = webMercatorBoundingBox.Transform(i => MapProjects.WebMercatorToGeodeticWgs84(i)); WriteGeodeticBoundingBoxToGoogleTileRegionsAsShapefile(fileName, geographicBoundingBox, zoomLevel); }
public BezierItem(sb.Point startPoint, sb.Point endPoint, Transform toScreen) { this._toScreen = toScreen; var start = toScreen.Transform(startPoint.AsWpfPoint()); var end = toScreen.Transform(endPoint.AsWpfPoint()); var startControlPoint = toScreen.Transform(startPoint.AsWpfPoint()); var endControlPoint = toScreen.Transform(endPoint.AsWpfPoint()); var bezierSegment = new BezierSegment(startControlPoint, endControlPoint, end, true); _bezierFigure = new PathFigure() { StartPoint = start }; _bezierFigure.Segments.Add(bezierSegment); PathGeometry bezierPathGeometry = new PathGeometry(new List <PathFigure>() { _bezierFigure }); //pathGeometry.Transform = this.panTransformForPoints; _startControlLineFigure = new PathFigure() { StartPoint = start }; _startControlLineFigure.Segments.Add(new LineSegment(startControlPoint, true)); _endControlLineFigure = new PathFigure() { StartPoint = end }; _endControlLineFigure.Segments.Add(new LineSegment(endControlPoint, true)); StartLocateable = new Locateable(MapProjects.WebMercatorToGeodeticWgs84(startPoint)) { Element = new Common.View.MapMarkers.Circle(1, new SolidColorBrush(Colors.Green)) }; StartLocateable.OnPositionChanged += (sender, e) => { var locateable = (Locateable)sender; var newPoint = toScreen.Transform(new System.Windows.Point(locateable.X, locateable.Y)); _bezierFigure.StartPoint = newPoint; _startControlLineFigure.StartPoint = newPoint; //update(); }; EndLocateable = new Locateable(MapProjects.WebMercatorToGeodeticWgs84(endPoint)) { Element = new Common.View.MapMarkers.Circle(1, new SolidColorBrush(Colors.Green)) }; EndLocateable.OnPositionChanged += (sender, e) => { var locateable = (Locateable)sender; var newPoint = toScreen.Transform(new System.Windows.Point(locateable.X, locateable.Y)); bezierSegment.Point3 = newPoint; _endControlLineFigure.StartPoint = newPoint; //update(); }; StartControlLocateable = new Locateable(MapProjects.WebMercatorToGeodeticWgs84(startControlPoint.AsPoint())) { Element = new Common.View.MapMarkers.Circle(1, new SolidColorBrush(Colors.Green)) }; StartControlLocateable.OnPositionChanged += (sender, e) => { var locateable = (Locateable)sender; var newPoint = toScreen.Transform(new System.Windows.Point(locateable.X, locateable.Y)); bezierSegment.Point1 = newPoint; (_startControlLineFigure.Segments.First() as LineSegment).Point = newPoint; //update(); }; EndControlLocateable = new Locateable(MapProjects.WebMercatorToGeodeticWgs84(endControlPoint.AsPoint())) { Element = new Common.View.MapMarkers.Circle(1, new SolidColorBrush(Colors.Green)) }; EndControlLocateable.OnPositionChanged += (sender, e) => { var locateable = (Locateable)sender; var newPoint = toScreen.Transform(new System.Windows.Point(locateable.X, locateable.Y)); bezierSegment.Point2 = newPoint; (_endControlLineFigure.Segments.First() as LineSegment).Point = newPoint; //update(); }; Path temp = new Path(); temp.Data = bezierPathGeometry; temp.Stroke = new SolidColorBrush(Colors.Black); temp.StrokeThickness = 2; //temp.RenderTransform = this.panTransformForPoints; //temp.Tag = new LayerTag(0) { IsTiled = false, LayerType = LayerType.Drawing }; //this.mapView.Children.Add(temp); //Path axLine2 = new Path() { Stroke = new SolidColorBrush(Colors.Gray), StrokeThickness = 1, RenderTransform = panTransformForPoints }; Path axLine2 = new Path() { Stroke = new SolidColorBrush(Colors.Gray), StrokeThickness = 1 }; axLine2.Data = new PathGeometry(new List <PathFigure>() { _startControlLineFigure }); //axLine2.Tag = new LayerTag(-1) { IsTiled = false, LayerType = LayerType.Drawing }; //this.mapView.Children.Add(axLine2); //Path axLine3 = new Path() { Stroke = new SolidColorBrush(Colors.Gray), StrokeThickness = 1, RenderTransform = panTransformForPoints }; Path axLine3 = new Path() { Stroke = new SolidColorBrush(Colors.Gray), StrokeThickness = 1 }; axLine3.Data = new PathGeometry(new List <PathFigure>() { _endControlLineFigure }); //axLine3.Tag = new LayerTag(-1) { IsTiled = false, LayerType = LayerType.Drawing }; //this.mapView.Children.Add(axLine3); }
public override IPoint ToGeodetic(IPoint webMercator) { return(MapProjects.WebMercatorToGeodeticWgs84(webMercator)); }