Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
        }