PlaceAutoCompleteFragment in android does not show offers and closes after entering the first letter

The AutoFill widget service in the Google Places API for Android does not work as expected. I included a snippet in my xml page, and also added listener activity to my onCreate() .
Then I start the execution of the autocomplete fragment, I press the first letter of the word I want to find, and suddenly instead of showing sentences, onError() is executed and closed.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.akhil.maplocation.MapsActivity" /> <fragment android:id="@+id/place_autocomplete_fragment" android:layout_width="match_parent" android:layout_height="wrap_content" android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment" /> </RelativeLayout> 

The main activity for this is:

 public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { private GoogleMap mMap; LatLng fromadd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment) getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment); autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { @Override public void onPlaceSelected(Place place) { // TODO: Get info about the selected place. fromadd = place.getLatLng(); double lat = fromadd.latitude; double lng = fromadd.longitude; gotoLocation(lat, lng, 15); } @Override public void onError(Status status) { // TODO: Handle the error. Toast.makeText(getBaseContext(),"failure",Toast.LENGTH_LONG).show(); } }); mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override public void onMapClick(LatLng latLng) { MarkerOptions markerOptions = new MarkerOptions(); markerOptions.position(latLng); fromadd = latLng; markerOptions.title(latLng.latitude + ":" + latLng.longitude + " " + latLng.toString()); mMap.clear(); mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); mMap.addMarker(markerOptions); } }); mapFragment.getMapAsync(this); } @Override public void onMapReady(GoogleMap googleMap) { mMap = googleMap; if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { return; } mMap.setMyLocationEnabled(true); 

}

+5
source share
2 answers

You will probably miss the API key, which is required to use the Google Places API. Check out this link . When you do everything that is indicated in the link, add this code to your AndroidManifest

 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_KEY" /> 
+7
source

mMap must be initialized before using mMap.setOnMapClickListener (....; gotoLocation (lat, lng, 15) should look like this:

 private void gotoLocation(double lat, double lng, int i) { // TODO Auto-generated method stub Marker myMarker = map.addMarker(new MarkerOptions() .icon(BitmapDescriptorFactory.fromResource(R.drawable.home)) .position(p1) .snippet("Lat:" + lat + "Lng:" + lng) .title("HOME")); map = ((MapFragment) getFragmentManager() .findFragmentById(R.id.map2)).getMap(); map.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), i)); } 
0
source

Source: https://habr.com/ru/post/1245057/


All Articles