private void SearchPlaceAndNearbys() { // Reset UI and clear existing before search again. ClearupPreviousSearchResult(); searchPoint = GetSearchPoint(); // osmReverseGeocoder only support 4326, we need convert point to 4326 var projectedSearchPoint = (PointShape)projection.ConvertToInternalProjection(searchPoint); // Create the searchPreference by UI controls. SearchPreference searchPreference = GetSearchPreferenceFromUI(); searchResult = osmReverseGeocoder.Search(projectedSearchPoint, searchPreference); if (searchResult != null) { // convert result to 3857 foreach (var place in searchResult.Nearby) { place.Geometry = projection.ConvertToExternalProjection(place.Geometry); var point = projection.ConvertToExternalProjection(place.CenterLongitude, place.CenterLatitude); place.CenterLongitude = point.X; place.CenterLatitude = point.Y; } // Update search result to map markers. DisplaySearchResult(searchResult); // Update search result to left panel list. tabSearchResult.SelectedIndex = 0; TabSearchResult_SelectionChanged(tabSearchResult, null); } }
private SearchPreference GetSearchPreferenceFromUI() { // Set parameters for searchPreference. SearchPreference searchPreference = new SearchPreference() { MaxSearchRadiusInMeter = Convert.ToDouble(maxSearchIntersectionRadius.Text, CultureInfo.InvariantCulture), ResultMode = ResultMode.Verbose, MaxResultCount = 20 }; // Read the search categories for nearbys. if (nearbySearchCategory.SelectedIndex == 0) { searchPreference.NearbyPlaceCategories = PlaceCategories.None; } else if (nearbySearchCategory.SelectedIndex == 1) { searchPreference.NearbyPlaceCategories = PlaceCategories.Common; } else if (nearbySearchCategory.SelectedIndex == 2) { searchPreference.NearbyPlaceCategories = PlaceCategories.All; } else { searchPreference.NearbyPlaceCategories = PlaceCategories.None; Collection <PlaceCategories> searchPlaceCategoriesForNearBy = new Collection <PlaceCategories>(); for (int i = 0; i < categoryGrid.Children.Count; i++) { if (categoryGrid.Children[i] is CheckBox) { CheckBox category = (CheckBox)categoryGrid.Children[i]; if (category.IsChecked == true) { PlaceCategories selectedCategory = (PlaceCategories)(Convert.ToInt32(category.Tag, CultureInfo.InvariantCulture)); searchPreference.NearbyPlaceCategories = searchPreference.NearbyPlaceCategories | selectedCategory; } } } } return(searchPreference); }