首页 > 解决方案 > Google Places Autocomplete 有时在 Xamarin Android 项目中不起作用

问题描述

我正在我的 Xamarin Android 项目中实现Google Places Autocomplete。(这不是 Xamarin Forms 项目)。当我第一次搜索时,自动完成功能正常,但随后的搜索无法正常工作。

在此处输入图像描述

即使自动完成功能有效,如果我选择一个项目,它也不会调用OnActivityResult函数并再次返回上述屏幕。

即使这些帖子也没有解决我的问题

我没有设置结算帐户,但我认为这不是问题,因为它有时会起作用。我该如何解决这个问题?

(请注意,这不是一个重复的问题,因为我找不到任何这样的问题)

这是我用来打开 Google Places 自动完成视图的代码

private void BtnLocationOnClick(object sender, EventArgs e)
{
    List<Place.Field> fields = new List<Place.Field>();

    fields.Add(Place.Field.Id);
    fields.Add(Place.Field.Name);
    fields.Add(Place.Field.LatLng);
    fields.Add(Place.Field.Address);

    Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.Overlay, fields)
        .SetCountry("US")
        .Build(this);

    StartActivityForResult(intent, 1);
}

选择项目OnActivityResult后,需要调用函数

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    base.OnActivityResult(requestCode, resultCode, data);

    if (requestCode == 1)
    {
        if (resultCode == Android.App.Result.Ok)
        {
            Place place = Autocomplete.GetPlaceFromIntent(data);

            txtLocation.Text = place.Name;

            googleMap.AnimateCamera(CameraUpdateFactory.NewLatLngZoom(place.LatLng, 15));
        }
    }
}

标签: google-mapsxamarinxamarin.androidgoogle-places-apigoogleplacesautocomplete

解决方案


要使 Places API(或任何其他 Maps API)正常工作,必须为您的项目启用结算功能。否则,您每天被限制为 1 个请求。

按照 Google 的入门指南创建结算帐户并将其链接到您的项目。

还要确保您的项目也启用了Places API 。

希望这可以帮助!


推荐阅读