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); }
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); }