2015-07-10 2 views
2

Я пытаюсь получить базовую функциональность автозаполнения от Google's Places Api, работая с Xamarin Android.Xamarin Android Google Места Api AutoComplete broken

Я использую версию 25.0.0.0 от Xamarin's Google Play Services - Location lib.

мне удалось добраться до точки вернувшихся результатов запроса, следуя this example code

Это фрагмент я использую для тестирования кода

public class PlaceAutocomplete: BaseFragment, IGoogleApiClientOnConnectionFailedListener { 
    IGoogleApiClient client; 
    public override void OnCreate(Bundle savedInstanceState) { 
     base.OnCreate(savedInstanceState); 
     client = new GoogleApiClientBuilder(Activity) 
              .EnableAutoManage(Activity as BaseFragmentActivity, 0, this) 
              .AddOnConnectionFailedListener(OnConnectionFailed) 
              .AddApi(Places.GEO_DATA_API) 
              .Build(); 
    } 

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     Places.GeoDataApi.GetAutocompletePredictions(client, "cul", 
     new LatLngBounds(new LatLng(33.515071, -118.796427), new LatLng(34.435985, -117.127371)), null) 
     .SetResultCallback<AutocompletePredictionBuffer>(AutocompleteResult); 

     return base.OnCreateView(inflater, container, savedInstanceState); 
    } 

    public void AutocompleteResult(AutocompletePredictionBuffer buffer) { 

     if(!buffer.Status.IsSuccess) { 
      Toast.MakeText(Activity, buffer.Status.StatusMessage, ToastLength.Long).Show(); 
      return; 
     } 

     var a = new List<IAutocompletePrediction>(); 
     for(var i = 0; i < buffer.Count; i++) { 
      var item = buffer.Get(i); 
      if(item is IAutocompletePrediction) { 
       a.Add((IAutocompletePrediction) item); 
      } else { 
       //all the results go in here 
      } 
     } 

     Toast.MakeText(Activity, a.Count.ToString(), ToastLength.Long).Show(); 
    } 

    public void OnConnectionFailed(ConnectionResult result) { 

    } 
} 

Есть 5 возвращены результаты от GetAutocompletePredictions, но все они типа с именем com.google.android.gms.location.places.internal.zzb, не могут быть переданы в IAutocompletePrediction, и я не нашел возможности использовать их.

Я сделал что-то неправильно или эта часть библиотеки Google Play Xamarin не полностью реализована?

+0

если ваше требование только автозаполнение от места апи то это может быть полезно для вас, скачать с помощью запроса REST http://appliedcodelog.blogspot.in/2015/05/google-place-api-with-autocomplete-in.html – Suchith

ответ

3

Edit - Новая информация

Это не ошибка. IAutocompletePrediction в настоящее время не осуществляется Xamarin, так что вы должны бросить его, как этот

item.JavaCast<IAutocompletePrediction>() 

для того, чтобы использовать его.

Старые informaton

Я разговаривал с Xamarin поддержки, и они подтвердили, что это ошибка.

Более подробную информацию о исправленной ошибкой можно найти здесь https://bugzilla.xamarin.com/show_bug.cgi?id=31878

0

По

Xamarin 4.0.0.1717/

Xamarin.Android 6.0.0.35/

Xamarin Google Play Services Расположение компонент v 27.0.0.0

, кажется, что в этом пространстве было немного работы. IEnumerable интерфейс теперь обеспечивает способ получить ответ напечатанного, и следующий фрагмент (заменяющую часть AutocompleteResult) работает:

var a = new List<IAutocompletePrediction>(); 
String t = ""; 
foreach (IAutocompletePrediction x in buffer) 
{ 
    a.Add(x); 
    t += "\n" + x.GetFullTextFormatted(new StyleSpan(TypefaceStyle.Normal)).ToString(); 
} 

Toast.MakeText(Activity, t /* a.Count.ToString() */, ToastLength.Long).Show(); 
Смежные вопросы