【问题标题】:Google Map places autocomplete doesn't work谷歌地图地点自动完成功能不起作用
【发布时间】:2019-04-29 06:26:37
【问题描述】:

我想实现 AutocompleteFragment(google 地方),但是当我单击以在片段中搜索视图时,片段消失(掉下来)。 Google Maps and Places API 工作,在控制台中我看到错误:

places.PlacesService.AutocompleteWidget: 100

我找不到它可能意味着什么。 我尝试在thisthis 答案中使用建议,但没有奏效。

我的 build.gradle 实现:

implementation 'com.google.android.gms:play-services:+'
implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.android.gms:play-services-places:+'
implementation 'com.google.firebase:firebase-core:16.0.4'
implementation 'com.google.android.gms:play-services-places:16.0.0'

Android.manifest 中的权限和元数据:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="it.mappe.permission.MAPS_RECEIVE" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="there_is_my_api_key"/>

在活动布局中我有这个 XML:

SupportMapFragment mapFragment;
SupportPlaceAutocompleteFragment autocompleteFragment;
GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
}
@Override
protected void onStart() {
    super.onStart();
    createMapView();
}

private void createMapView() {
    getSupportFragmentManager().executePendingTransactions();
    mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapView);
    mapFragment.getMapAsync(this);

    autocompleteFragment = (SupportPlaceAutocompleteFragment) getSupportFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
    AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
            .setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES)
            .build();

    autocompleteFragment.setFilter(typeFilter);
    autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {

        @Override
        public void onPlaceSelected(com.google.android.gms.location.places.Place place) {
            Log.i(TAG, "Place: " + place.getName());
        }

        @Override
        public void onError(Status status) {
            Log.e(TAG, "An error occurred: " + status + ", status code " + status.getStatusCode());
        }
    });
}

当我点击片段中的搜索视图时,我在 LogCat 中看到了这个:

发生错误:Status{statusCode=ERROR, resolution=null},状态码 13

还有this page给我一个关于“状态码13”的漂亮解释:

操作失败,没有更多详细信息。

感谢您的建议

【问题讨论】:

    标签: android google-maps google-maps-android-api-2 google-places google-maps-autocomplete


    【解决方案1】:

    我得到了同样的错误“错误 13”,我在 stackoverflow 中问了这个问题。

    虽然我没有得到任何答复,但我得到了在谷歌地图工作的人的评论。他说这是谷歌方面的错误
    这是我的问题的link

    我正在寻找答案尝试他们:

    api 密钥库应包含适用于 android、web 和地图的位置 api 应该有multidex支持

    【讨论】:

    • 我创建了新项目,但仍然有同样的错误。我听不懂你的最后一句话,猫,请解释一下?
    • 我已经在 Autocompletefragment 上做了一个演示。等待我将它发布在 github 上并给你一个链接。该代码对我有用。让我们看看它是否适合你
    • 感谢您的演示,它非常有帮助,因为它不适用于我的 API :) 我创建了一个新的 Google 帐户和新的支付帐户,现在它适用于新帐户,谢谢!
    • 乐于助人:)
    【解决方案2】:

    Google console 获取 google API 密钥并添加元数据

    它看起来像:AIsddsfdsf-FAdsdsf6755fgfgdd3w

    Official Guide如何生成地图API Key

    <meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="there_is_my_api_key"/>
    

    【讨论】:

    • 我有我的 API 密钥,只为这篇文章更改该行。 Google 控制台显示对 MapsSDK 的肯定请求,但对 PlacesSDK 的所有请求在控制台中都有此错误:places.PlacesService.AutocompleteWidget: 100
    猜你喜欢
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2013-09-25
    • 2014-11-18
    相关资源
    最近更新 更多