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