protected RecordingLayer()
        {
            IsChecked = false;
            ModuleStreetSmart    streetSmart = ModuleStreetSmart.Current;
            CycloMediaGroupLayer groupLayer  = streetSmart.CycloMediaGroupLayer;

            _constantsRecordingLayer = ConstantsRecordingLayer.Instance;

            if (groupLayer != null)
            {
                foreach (var layer in groupLayer)
                {
                    if (layer.IsRemoved)
                    {
                        IsChecked = layer.Name != _constantsRecordingLayer.RecordingLayerName && IsChecked;
                    }
                    else
                    {
                        IsChecked = layer.Name == _constantsRecordingLayer.RecordingLayerName || IsChecked;
                    }
                }

                groupLayer.PropertyChanged += OnLayerPropertyChanged;
            }
        }
        protected StreetSmart()
        {
            ProjectClosedEvent.Subscribe(OnProjectClosed);
            _currentDispatcher = Dispatcher.CurrentDispatcher;
            _inRestart         = false;
            _inClose           = false;

            _apiKey    = ApiKey.Instance;
            _settings  = Settings.Instance;
            _constants = ConstantsViewer.Instance;

            _login = Login.Instance;
            _login.PropertyChanged += OnLoginPropertyChanged;

            _configuration = FileConfiguration.Instance;
            _configuration.PropertyChanged += OnConfigurationPropertyChanged;

            _openNearest                  = new List <string>();
            _crossCheck                   = null;
            _lastSpatialReference         = null;
            _configurationPropertyChanged = new List <string>();

            GetVectorLayerListAsync();

            ModulestreetSmart streetSmartModule = ModulestreetSmart.Current;

            _viewerList           = streetSmartModule.ViewerList;
            _measurementList      = streetSmartModule.MeasurementList;
            _cycloMediaGroupLayer = streetSmartModule.CycloMediaGroupLayer;

            Initialize();
        }
Ejemplo n.º 3
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string imageId = value as string;
            var    image   = new Bitmap(80, 20);

            if (parameter != null)
            {
                string strParameter = parameter.ToString();
                float  fontSize     = float.Parse(strParameter);

                ModulestreetSmart streetSmart = ModulestreetSmart.Current;
                ViewerList        viewerList  = streetSmart.ViewerList;
                Viewer            thisViewer  = viewerList.GetImageId(imageId);
                Color             color       = thisViewer?.Color ?? Color.Gray;
                Brush             brush       = new SolidBrush(Color.FromArgb(255, color));

                using (var sf = new StringFormat())
                {
                    using (var ga = Graphics.FromImage(image))
                    {
                        ga.Clear(Color.Transparent);
                        Rectangle rectangle = new Rectangle(2, 2, 76, 16);
                        ga.DrawRectangle(new Pen(Brushes.Black, 1), rectangle);
                        ga.FillRectangle(brush, rectangle);
                        sf.Alignment = StringAlignment.Center;
                        Font font = new Font("Arial", fontSize);
                        ga.DrawString(imageId, font, Brushes.Black, rectangle, sf);
                    }
                }
            }

            return(image.ToBitmapSource());
        }
Ejemplo n.º 4
0
        private async void OnImageIdChanged(object sender, TextChangedEventArgs e)
        {
            TextBox           textBox           = sender as TextBox;
            string            imageId           = textBox?.Text ?? string.Empty;
            PaneImageIdSearch paneImageIdSearch = ((dynamic)DataContext);

            paneImageIdSearch.ImageInfo.Clear();

            if (imageId.Length == 8)
            {
                ModulestreetSmart    streetSmart = ModulestreetSmart.Current;
                CycloMediaGroupLayer groupLayer  = streetSmart.CycloMediaGroupLayer;

                foreach (var layer in groupLayer)
                {
                    SpatialReference spatialReference = await layer.GetSpatialReferenceAsync();

                    string            epsgCode          = $"EPSG:{spatialReference.Wkid}";
                    FeatureCollection featureCollection = FeatureCollection.Load(imageId, epsgCode);

                    if (featureCollection.NumberOfFeatures >= 1)
                    {
                        foreach (Recording recording in featureCollection.FeatureMembers.Recordings)
                        {
                            paneImageIdSearch.ImageInfo.Add(recording);
                        }
                    }
                }
            }
        }
Ejemplo n.º 5
0
        public VectorLayerList()
        {
            _updateHeight  = false;
            _currentToolId = string.Empty;
            ModuleStreetSmart modulestreetSmart = ModuleStreetSmart.Current;

            _measurementList      = modulestreetSmart.MeasurementList;
            _cycloMediaGroupLayer = modulestreetSmart.CycloMediaGroupLayer;
            EditTool = EditTools.NoEditTool;
        }
        protected override async void OnClick()
        {
            OnUpdate();
            ModuleStreetSmart streetSmart = ModuleStreetSmart.Current;

            if (IsChecked)
            {
                await streetSmart.RemoveLayerAsync(_constantsRecordingLayer.RecordingLayerName);
            }
            else
            {
                await streetSmart.AddLayersAsync(_constantsRecordingLayer.RecordingLayerName);
            }
        }
        public VectorLayer(FeatureLayer layer, VectorLayerList vectorLayerList)
        {
            _vectorLayerList    = vectorLayerList;
            Layer               = layer;
            _settings           = Settings.Instance;
            Overlay             = null;
            _selection          = null;
            _updateMeasurements = false;

            StreetSmartModule streetSmart = StreetSmartModule.Current;

            _viewerList      = streetSmart.ViewerList;
            _measurementList = streetSmart.MeasurementList;
            _ci = CultureInfo.InvariantCulture;
        }
Ejemplo n.º 8
0
        private async Task AddLayerAsync(Layer layer)
        {
            FeatureLayer         featureLayer    = layer as FeatureLayer;
            ModuleStreetSmart    streetSmart     = ModuleStreetSmart.Current;
            CycloMediaGroupLayer cycloGrouplayer = streetSmart?.CycloMediaGroupLayer;

            if (featureLayer != null && cycloGrouplayer != null && !cycloGrouplayer.IsKnownName(featureLayer.Name))
            {
                if (!this.Aggregate(false, (current, vecLayer) => vecLayer.Layer == layer || current))
                {
                    var  vectorLayer = new VectorLayer(featureLayer, this);
                    bool initialized = await vectorLayer.InitializeEventsAsync();

                    if (initialized)
                    {
                        Add(vectorLayer);
                        vectorLayer.PropertyChanged += OnVectorLayerPropertyChanged;
                        LayerAdded?.Invoke(vectorLayer);
                    }
                }
            }
        }
Ejemplo n.º 9
0
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string               result      = string.Empty;
            string               imageId     = value as string;
            ModulestreetSmart    streetSmart = ModulestreetSmart.Current;
            CycloMediaGroupLayer groupLayer  = streetSmart.CycloMediaGroupLayer;
            AutoResetEvent       taskWaiter  = new AutoResetEvent(false);
            const int            timeOut     = 3000;

            Task.Run(async() =>
            {
                Recording recording = await groupLayer.GetRecordingAsync(imageId);
                double stdX         = recording == null ? 0 : (recording.LongitudePrecision ?? 0);
                double stdY         = recording == null ? 0 : (recording.LatitudePrecision ?? 0);
                double stdZ         = recording == null ? 0 : (recording.HeightPrecision ?? 0);
                result = $"{stdX:0.00} {stdY:0.00} {stdZ:0.00}";
                taskWaiter.Set();
            });

            taskWaiter.WaitOne(timeOut);
            return(result);
        }
Ejemplo n.º 10
0
        public StreetSmart()
        {
            InitializeComponent();
            _settings  = FileSettings.Instance;
            _constants = ConstantsViewer.Instance;

            _login = FileLogin.Instance;

            _configuration = FileConfiguration.Instance;

            _openNearest          = new List <string>();
            _crossCheck           = null;
            _lastSpatialReference = null;
            _layers           = new List <CycloMediaLayer>();
            _startOpenNearest = false;

            GetVectorLayerListAsync();
            ModulestreetSmart streetSmartModule = ModulestreetSmart.Current;

            _viewerList           = streetSmartModule.ViewerList;
            _measurementList      = streetSmartModule.MeasurementList;
            _cycloMediaGroupLayer = streetSmartModule.CycloMediaGroupLayer;
        }
Ejemplo n.º 11
0
        private async void GetVectorLayerListAsync()
        {
            ModulestreetSmart streetSmartModule = ModulestreetSmart.Current;

            _vectorLayerList = await streetSmartModule.GetVectorLayerListAsync();
        }
Ejemplo n.º 12
0
        public async Task CreateMeasurement(ArcGISGeometryType geometryType)
        {
            if (Api != null)
            {
                MeasurementGeometryType measurementGeometryType = MeasurementGeometryType.Unknown;

                switch (geometryType)
                {
                case ArcGISGeometryType.Point:
                    if (GlobeSpotterConfiguration.MeasurePoint)
                    {
                        measurementGeometryType = MeasurementGeometryType.Point;
                    }

                    break;

                case ArcGISGeometryType.Polyline:
                    if (GlobeSpotterConfiguration.MeasureLine)
                    {
                        measurementGeometryType = MeasurementGeometryType.LineString;
                    }

                    break;

                case ArcGISGeometryType.Polygon:
                    if (GlobeSpotterConfiguration.MeasurePolygon)
                    {
                        measurementGeometryType = MeasurementGeometryType.Polygon;
                    }

                    break;
                }

                if (measurementGeometryType != MeasurementGeometryType.Unknown)
                {
                    ModulestreetSmart streetSmartModule = ModulestreetSmart.Current;
                    ViewerList        viewerList        = streetSmartModule.ViewerList;
                    IPanoramaViewer   panoramaViewer    = viewerList.ActiveViewer;

                    if (panoramaViewer != null)
                    {
                        if (Count == 0)
                        {
                            Measurement measurement = new Measurement(null, null, DrawPoint, Api)
                            {
                                ObjectId    = _lastObjectId,
                                VectorLayer = _lastVectorLayer
                            };

                            Add(new Guid().ToString(), measurement);
                            measurement.Open();
                        }

                        //if (_lastSketch)
                        //{
                        Measurement measurement2 = this.ElementAt(0).Value;
                        measurement2.VectorLayer = _lastVectorLayer;
                        measurement2.SetSketch();
                        //}

                        IMeasurementOptions options = MeasurementOptionsFactory.Create(measurementGeometryType);
                        Api.StartMeasurementMode(panoramaViewer, options);
                    }
                }
            }
        }
/*
 *  protected async override void OnUpdate()
 *  {
 *    Cursor nowCursor = Cursor;
 *    Cursor = _containsFeatures ? Cursors.Arrow : _thisCursor;
 *
 *    if (nowCursor != Cursor)
 *    {
 *      await FrameworkApplication.SetCurrentToolAsync("esri_mapping_exploreTool");
 *      await FrameworkApplication.SetCurrentToolAsync("StreetSmartArcGISPro_openImageTool");
 *    }
 *
 *    base.OnUpdate();
 *  }
 *
 *  protected override async void OnToolMouseMove(MapViewMouseEventArgs e)
 *  {
 *    await QueuedTask.Run(() =>
 *    {
 *      var constants = ConstantsRecordingLayer.Instance;
 *      double size = constants.SizeLayer;
 *      double halfSize = size / 2;
 *      MapView activeView = MapView.Active;
 *
 *      WinPoint clientPoint = e.ClientPoint;
 *      WinPoint pointScreen = activeView.ClientToScreen(clientPoint);
 *      double x = pointScreen.X;
 *      double y = pointScreen.Y;
 *      WinPoint minPoint = new WinPoint(x - halfSize, y - halfSize);
 *      WinPoint maxPoint = new WinPoint(x + halfSize, y + halfSize);
 *      MapPoint minPoint1 = activeView.ScreenToMap(minPoint);
 *      MapPoint maxPoint1 = activeView.ScreenToMap(maxPoint);
 *      Envelope envelope = EnvelopeBuilder.CreateEnvelope(minPoint1, maxPoint1, minPoint1.SpatialReference);
 *      var features = MapView.Active?.GetFeatures(envelope);
 *      _containsFeatures = (features != null) && (features.Count >= 1);
 *    });
 *
 *    base.OnToolMouseMove(e);
 *  }
 */
        protected override Task <bool> OnSketchCompleteAsync(Geometry geometry)
        {
            return(QueuedTask.Run(() =>
            {
                MapPoint point = geometry as MapPoint;
                MapView activeView = MapView.Active;

                if (point != null && activeView != null)
                {
                    var constants = ConstantsRecordingLayer.Instance;
                    double size = constants.SizeLayer;
                    double halfSize = size / 2;

                    SpatialReference pointSpatialReference = point.SpatialReference;
                    var pointScreen = activeView.MapToScreen(point);
                    double x = pointScreen.X;
                    double y = pointScreen.Y;
                    WinPoint pointScreenMin = new WinPoint(x - halfSize, y - halfSize);
                    WinPoint pointScreenMax = new WinPoint(x + halfSize, y + halfSize);
                    var pointMapMin = activeView.ScreenToMap(pointScreenMin);
                    var pointMapMax = activeView.ScreenToMap(pointScreenMax);

                    Envelope envelope = EnvelopeBuilder.CreateEnvelope(pointMapMin, pointMapMax, pointSpatialReference);
                    var features = activeView.GetFeatures(envelope);

                    ModuleStreetSmart streetSmart = ModuleStreetSmart.Current;
                    CycloMediaGroupLayer groupLayer = streetSmart?.CycloMediaGroupLayer;

                    if (features != null && groupLayer != null)
                    {
                        _nearest = Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl);

                        if (_nearest)
                        {
                            Settings settings = Settings.Instance;
                            MySpatialReference cycloCoordSystem = settings.CycloramaViewerCoordinateSystem;

                            if (cycloCoordSystem != null)
                            {
                                SpatialReference cycloSpatialReference = cycloCoordSystem.ArcGisSpatialReference ??
                                                                         cycloCoordSystem.CreateArcGisSpatialReferenceAsync().Result;

                                if (pointSpatialReference.Wkid != cycloSpatialReference.Wkid)
                                {
                                    ProjectionTransformation projection = ProjectionTransformation.Create(pointSpatialReference,
                                                                                                          cycloSpatialReference);
                                    point = GeometryEngine.Instance.ProjectEx(point, projection) as MapPoint;
                                }

                                if (point != null)
                                {
                                    CultureInfo ci = CultureInfo.InvariantCulture;
                                    _location = string.Format(ci, "{0},{1}", point.X, point.Y);

                                    if (!streetSmart.InsideScale())
                                    {
                                        double minimumScale = ConstantsRecordingLayer.Instance.MinimumScale;
                                        double scale = minimumScale / 2;
                                        Camera camera = new Camera(point.X, point.Y, scale, 0.0);
                                        MapView.Active?.ZoomTo(camera);
                                    }
                                }
                            }
                        }
                        else
                        {
                            foreach (var feature in features)
                            {
                                Layer layer = feature.Key;
                                CycloMediaLayer cycloMediaLayer = groupLayer.GetLayer(layer);

                                if (cycloMediaLayer != null)
                                {
                                    foreach (long uid in feature.Value)
                                    {
                                        Recording recording = cycloMediaLayer.GetRecordingAsync(uid).Result;

                                        if (recording.IsAuthorized == null || (bool)recording.IsAuthorized)
                                        {
                                            _location = recording.ImageId;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                return true;
            }));
        }