5

Android için Google Places API otomatik tamamlama pencere aracı hizmeti beklendiği gibi çalışmıyor. Fragmanı xml sayfamda ekledim ve ayrıca dinleyici etkinliğimi onCreate()'a ekledim.
Daha sonra otomatik tamamlama parçasını çalıştırmaya başladım, aramak istediğim kelimenin ilk harfini tıklıyorum ve aniden önerileri göstermek yerine onError() yürütülür ve kapatılır.PlaceAutoCompleteFragment uygulamasında öneri görünmüyor ve ilk harfi girdikten sonra kapanıyor

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

Bunun MainActivity geçerli:

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

hata nedir placeautocmplete gelen hata oturum ve burada oturum sonrası –

+0

Durum {statusCode = PLACES_API_ACCESS_NOT_CONFIGURED, çözünürlük = null} – Akhil

+0

- http: aşağıdaki gibi bakmak oldu?. // stackoverflow.com/questions/30434238/place-picker-automatically-close-after-launch Eğer bu işe yaramazsa beni bilgilendirir. Tam bir cevap göndereceğim. –

cevap

7

Muhtemelen Google Rehber API kullanımı için gerekli olan bir API anahtarı, özledim. this link'a bakın. Bağlantıya belirtilen tüm işlemler yaptığınızda, ayrıca mMap.setOnMapClickListener (.... kullanımından önce initialied gereken sizin 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

Harita için API KEY kodunu kullanıyorum. Yeni bir API KEY oluşturmalı mıyım yoksa aynı anahtarı kullanabilir miyim? – Akhil

+0

Bunu kaydettiğimde anladım: Durum {statusCode = PLACES_API_ACCESS_NOT_CONFIGURED, resolution = null} – Akhil

+1

API anahtarının iyi olması gerektiğini düşünüyorum. Ancak uygulamanızı geliştiriciler konsolunda etkinleştirdiğinizden emin olun. Orada uygulama paketi adınızı ve uygulamanızın SHA-1'ini sağlamalısınız. SHA- nasıl elde edileceğine dair bilgi için, geliştiriciler konsolunda ve [bu link] (http://stackoverflow.com/questions/15727912/sha-1-fingerprint-of-keystore-certificate) uygulamalarını etkinleştirme hakkında bilgi için bağlantıya göz atın. 1. –

0

mmap için bu kodu ekleyin; gotoLocation (lat, Ing, 15) Bu size yardımcı olabilir

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));     
      }  
İlgili konular