5

Il servizio di widget di completamento automatico in Google Places API per Android non funziona come previsto. Ho incluso il frammento nella mia pagina xml e ho anche aggiunto l'attività listener al mio onCreate().
Quindi avvio l'esecuzione del frammento di completamento automatico, faccio clic sulla prima lettera della parola che voglio cercare e all'improvviso invece di mostrare suggerimenti, lo onError() viene eseguito e si chiude.PlaceAutoCompleteFragment in Android non mostra suggerimenti e si chiude dopo aver inserito la prima lettera

<?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> 

Il mainactivity per questo è:

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); 

}

+0

qual è l'errore del registro degli errori dal placeautocmplete e post il registro qui –

+0

Stato {statusCode = PLACES_API_ACCESS_NOT_CONFIGURED, risoluzione = null} – Akhil

+0

questo potrebbe aiutare - http: // stackoverflow.com/questions/30434238/place-picker-automatically-close-after-launch se questo non funzionerà mi informerà. posterò una risposta completa. –

risposta

7

Probabilmente manca una chiave API, che è richiesto per l'utilizzo di Google Places API. Controlla this link. Quando si fanno tutte le cose di cui il link, anche aggiungere il codice al tuo 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" /> 
+0

Ho il codice API KEY per la mappa. Devo creare un nuovo API KEY o posso usare la stessa chiave? – Akhil

+0

Ho ottenuto questo quando l'ho registrato: Status {statusCode = PLACES_API_ACCESS_NOT_CONFIGURED, risoluzione = null} – Akhil

+1

Penso che la chiave API dovrebbe essere ok. Ma assicurati di abilitare la tua applicazione nella console degli sviluppatori. Qui è necessario fornire il nome del pacchetto dell'applicazione e l'SHA-1 dell'applicazione. Controlla il link in risposta per informazioni sull'abilitazione dell'applicazione nella console degli sviluppatori e [questo link] (http://stackoverflow.com/questions/15727912/sha-1-fingerprint-of-keystore-certificate) per informazioni su come ottenere SHA- 1. –

0

mmap bisogno di essere initialied prima dell'uso di mMap.setOnMapClickListener (....; la gotoLocation (lat, lng, 15) ?. ha a guardare come di seguito:

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));     
      }  
Problemi correlati