Beispiel #1
0
        /// <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;
        }