public InspectResultsViewModel(MessageBus messageBus, GeospatialBox extent)
        {
            // create an isolated message bus
            InnerMessageBus = new MessageBus();
            InnerMessageBus.Subscribe <BuildSearchMessage>(async m =>
            {
                var query = new SearchQuery();
                await messageBus.Publish(new BuildSearchMessage(query)); // get current global query
                query.Viewport = extent;

                var start = m.Query.Start;
                m.Query.Apply(query);
                m.Query.Start = start;
            });
            InnerMessageBus.Subscribe <EndSearchMessage>(m =>
            {
                _originalResults = _originalResults ?? m.Results;
                NotifyPropertyChanged(nameof(Total));
            });

            // relay certain messages to outer bus so they can be resolved
            InnerMessageBus.Subscribe <GetServerSettingsMessage>(m => messageBus.Publish(m));

            FacetsViewModel   = new SearchFacetsViewModel(InnerMessageBus);
            ResultsViewModel  = new SearchResultsViewModel(InnerMessageBus);
            DocumentViewModel = new DocumentViewModel(InnerMessageBus);
        }
        public bool TryGetValueExtent(MapPoint point, out GeospatialBox extent, out Envelope elementHitbox)
        {
            // TODO: is there a better way to wrap around a point?
            var xOffset = 0.000004;
            var yOffset = 0.000008;

            foreach (var elem in _elements)
            {
                if (GeometryEngine.Instance.Contains(elem.Hitbox, point))
                {
                    extent = new GeospatialBox()
                    {
                        West  = elem.Location.X - xOffset,
                        South = elem.Location.Y - yOffset,
                        East  = elem.Location.X + xOffset,
                        North = elem.Location.Y + yOffset
                    };
                    elementHitbox = elem.Hitbox;
                    return(true);
                }
            }
            extent        = null;
            elementHitbox = null;
            return(false);
        }
示例#3
0
 public bool TryGetValueExtent(MapPoint point, out GeospatialBox extent, out Envelope elementHitbox)
 {
     foreach (var elem in _elements)
     {
         if (GeometryEngine.Instance.Contains(elem.Hitbox, point))
         {
             extent = new GeospatialBox()
             {
                 West = elem.Value.West, South = elem.Value.South, East = elem.Value.East, North = elem.Value.North
             };
             elementHitbox = elem.Hitbox;
             return(true);
         }
     }
     extent        = null;
     elementHitbox = null;
     return(false);
 }