Автозаполнение Google Адресов не заполняет адрес - PullRequest
0 голосов
/ 26 января 2019

У меня есть активное автозаполнение Google Адресов, работающее с Xamarin Forms или Cross Platform. У меня есть рабочее решение, которое автоматически заполняет адрес, когда пользователь вводит адрес. Моя проблема в том, что когда пользователь выбирает его из списка, адрес не переходит на search_bar.text ... Панель поиска просто остается с набранным текстом? Как я могу получить текст при выборе для заполнения в строке поиска.

Я новичок в формах Xamarin и C #.

public Createbusinessaccount ()
    {
        InitializeComponent ();

        search_bar.ApiKey = GooglePlacesApiKey;
        search_bar.Type = PlaceType.Address;
        search_bar.Components = new Components("country:us"); // Restrict results to Australia and New Zealand
        search_bar.PlacesRetrieved += Search_Bar_PlacesRetrieved;
        search_bar.TextChanged += Search_Bar_TextChanged;
        search_bar.MinimumSearchText = 2;
        results_list.ItemSelected += Results_List_ItemSelected;

    }



    void Search_Bar_PlacesRetrieved(object sender, AutoCompleteResult result)
    {
        results_list.ItemsSource = result.AutoCompletePlaces;
        spinner.IsRunning = false;
        spinner.IsVisible = false;

        if (result.AutoCompletePlaces != null && result.AutoCompletePlaces.Count > 0)
            results_list.IsVisible = true;
    }

    void Search_Bar_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (!string.IsNullOrEmpty(e.NewTextValue))
        {
            results_list.IsVisible = false;
            spinner.IsVisible = true;
            spinner.IsRunning = true;
        }
        else
        {
            results_list.IsVisible = true;
            spinner.IsRunning = false;
            spinner.IsVisible = false;
        }
    }

    async void Results_List_ItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        if (e.SelectedItem == null)
            return;

        var prediction = (AutoCompletePrediction)e.SelectedItem;
        results_list.SelectedItem = null;

        var place = await Places.GetPlace(prediction.Place_ID, GooglePlacesApiKey);

        if (place != null)
            await DisplayAlert(
                place.Name, string.Format("Lat: {0}\nLon: {1}", place.Latitude, place.Longitude), "OK");

    } 

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Я все еще пытаюсь это исправить, он только добавляет название улицы и номер, а не весь адрес

0 голосов
/ 26 января 2019

В вашем методе ItemSelected вам нужно установить текст панели поиска:

async void Results_List_ItemSelected(object sender, SelectedItemChangedEventArgs e)
    {
        if (e.SelectedItem == null)
            return;

        var prediction = (AutoCompletePrediction)e.SelectedItem;

        search_bar.Text = prediction.Name? // Your property here

        results_list.SelectedItem = null;

        var place = await Places.GetPlace(prediction.Place_ID, GooglePlacesApiKey);

        if (place != null)
            await DisplayAlert(
                place.Name, string.Format("Lat: {0}\nLon: {1}", place.Latitude, place.Longitude), "OK");

    } 
...