public SCMap AddOpenStreetSearchLayer(string search, OpenStreetSearchLayerOptions options = null)
        {
            options ??= new OpenStreetSearchLayerOptions();

            SearchBoundingBox boundingBox = null;

            if (options.BoundingBox != null && options.BoundingBox.Length > 0 && options.BoundingBox.Length != 4)
            {
                throw new Exception("Invalid bounding box. Shall be a double array with 4 elements.");
            }

            if (options.BoundingBox != null && options.BoundingBox.Length == 4)
            {
                boundingBox = new SearchBoundingBox(options.BoundingBox[0], options.BoundingBox[1], options.BoundingBox[2], options.BoundingBox[3]);
            }

            var provider = new OsmSearchDataProvider()
            {
                GenerateLayerItems    = true,
                MaxVisibleResultCount = options.ResultCount,
                ResultsCount          = options.ResultCount,
                ProcessMouseEvents    = false
            };

            options.CreateLayer(this, provider);

            provider.Search(search, options.Culture, options.CountryCodes, boundingBox, options.ResultCount);

            return(this);
        }
Ejemplo n.º 2
0
        public override InformationDataProviderBase CreateDataProvider(InformationLayer layer, string search, int resultCount)
        {
            SearchBoundingBox boundingBox = null;

            if (BoundingBox != null && BoundingBox.Length > 0 && BoundingBox.Length != 4)
            {
                throw new Exception("Invalid bounding box. Shall be a double array with 4 elements.");
            }

            if (BoundingBox != null && BoundingBox.Length == 4)
            {
                boundingBox = new SearchBoundingBox(BoundingBox[0], BoundingBox[1], BoundingBox[2], BoundingBox[3]);
            }

            var provider = new OsmSearchDataProvider()
            {
                GenerateLayerItems    = true,
                MaxVisibleResultCount = resultCount,
                ResultsCount          = resultCount,
                ProcessMouseEvents    = false
            };

            layer.DataProvider = provider;

            /*
             * var completion = new TaskCompletionSource<InformationDataProviderBase>();
             *
             * provider.SearchCompleted += (s, e) =>
             * {
             *      completion.SetResult(provider);
             * };
             */

            provider.Search(search, Culture, CountryCodes, boundingBox, resultCount);

            //return completion.Task.Result;

            return(provider);
        }