public void CanCreateElementSource() { // ACT var observable = _elementSourceProvider.Get(CreateDefaultBoundingBox()); // ASSERT Assert.IsNotNull(observable.Wait()); }
private IEnumerable <Element> GetElementById(long id) { var boundingBox = _tileController.CurrentTile.BoundingBox; var elementSources = _elementSourceProvider.Get(boundingBox).ToList().Wait(); return(elementSources.SelectMany(es => es.Get(boundingBox, MapConsts.MaxZoomLevel) .ToArray().Wait().Where(e => e.Id == id))); }
/// <summary> Ensures that the corresponding element source is loaded. </summary> private void EnsureElementSource(Vector2d point) { var boundingBox = _tileController.GetTile(point).BoundingBox; var elementSource = _elementSourceProvider.Get(boundingBox) .SingleOrDefault(e => !e.IsReadOnly).Wait(); // create in memory element source if (elementSource == null) { // NOTE use bounding box which fits whole world var indexBuilder = new InMemoryIndexBuilder(new BoundingBox( new GeoCoordinate(-90, -180), new GeoCoordinate(90, 180)), IndexSettings.CreateDefault(), _objectPool, Trace); indexBuilder.Build(); elementSource = new ElementSource(indexBuilder) { IsReadOnly = false }; _elementSourceProvider.Add(elementSource); } CommitIfNecessary(elementSource); _currentElementSource = elementSource; _elementSourceEditor.ElementSource = _currentElementSource; }
private ElementSource GetElementSource(BoundingBox bbox) { var elementSource = _elementSourceProvider.Get(bbox).Wait() as ElementSource; if (elementSource == null) { throw new NotSupportedException(Strings.SearchNotSupported); } return(elementSource); }
/// <inheritdoc /> public IObservable <Unit> Load(Tile tile) { var boundingBox = tile.BoundingBox; var zoomLevel = ZoomHelper.GetZoomLevel(tile.RenderMode); var filterElementVisitor = new CompositeElementVisitor( new NodeVisitor(tile, _modelLoader, _objectPool), new WayVisitor(tile, _modelLoader, _objectPool), new RelationVisitor(tile, _modelLoader, _objectPool)); _elevationProvider.SetNullPoint(tile.RelativeNullPoint); // download elevation data if necessary if (!_elevationProvider.HasElevation(tile.BoundingBox)) { _elevationProvider.Download(tile.BoundingBox).Wait(); } // prepare tile tile.Accept(tile, _modelLoader); var subject = new Subject <Unit>(); _elementSourceProvider .Get(tile.BoundingBox) .SelectMany(e => e.Get(boundingBox, zoomLevel)) .ObserveOn(Scheduler.ThreadPool) .SubscribeOn(Scheduler.ThreadPool) .Subscribe(element => element.Accept(filterElementVisitor), () => { tile.Canvas.Accept(tile, _modelLoader); subject.OnCompleted(); }); return(subject); }