Google Map Places自动完成功能不起作用

时间:2018-11-27 13:34:24

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

我想实现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());
        }
    });
}

当我点击片段中的searchview时,我会在LogCat中看到它:

  

发生错误:状态{statusCode =错误,分辨率=空},状态码13

this page给了我关于“状态码13”的漂亮解释:

  

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

谢谢您的建议

2 个答案:

答案 0 :(得分:0)

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

它看起来像: AIsddsfdsf-FAdsdsf6755fgfgdd3w

Official Guide如何生成Map API密钥

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

答案 1 :(得分:0)

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

尽管我没有得到任何答复,但是我得到了Google地图工作人员的评论。他说这是Google方面的错误
这是我的问题link

我寻找答案试试看:

api密钥库应包含用于android,web和地图的place api 应当有multidex支持