Home / Android-Entwicklung / Das Android Arsenal – Standort

Das Android Arsenal – Standort

Niedliche Kotlin-Bibliothek zum Implementieren von PlaceAutocomplete in Android

Erste Schritte

In Ihrem Projekt build.gradle müssen Sie über Folgendes verfügen

 buildscript 
 {
     .. 

.
    Repositories {
         .. 


.
        jcenter ()
    }
     .. 

.
    Abhängigkeiten {
         .. 
.
        classpath  " org.jetbrains.kotlin: kotlin-gradle-plugin:  $ k  otlin_version " 


    }
     .. 
.
} 

In Ihrem App-Build.gradle müssen Sie Folgendes haben

 .. 
.
zutreffen  plugin :  ' kotlin-android ' 

 zutreffen  plugin :  ' kotlin-android-extensions  '
 .. 
.
 Abhängigkeiten 
 {
     .. 
.
    Implementierung  " com.jesualex.android:autocompletelocation:  $ l  ast_version " 

} 

Google Maps-API-Schlüssel abrufen und Google Places aktivieren API für Android (Fügen Sie Ihre API-Schlüsselwerte hinzu) :

   < Ressourcen 
>
    < string  name  =  " google_places_key " 
 translatable  =  " false " [19659007]  templateMergeStrategy  =  " preserve " > YOUR_KEY_HERE </  string 
>
  </  resources > 

Fügen Sie die AutocompleteLocation zum Layout hinzu:

   < com 
 .jesualex.autocompletelocation.AutocompleteLocation
       android :  id  =  " @ + id / autocomplete_location " 
 android :  layout_width  =  " match_parent " 
 android :  layout_height  =  " wrap_content  / 19659008]  Legen Sie die Listener fest (alle sind für mehr Komfort optional): 

 public  class  MainActivity  extend  FragmentActivity 
 implementiert  AutocompleteLocation .  AutocompleteLocationListener 

 {

   @Override  protected  void  onCreate  ( Bundle  savedInstanceState 
) {
     ... 
 AutocompleteLocation  autoCompleteLocation  = 

        ( AutocompleteLocation ) findViewById ( R .  id . 
 autocomplete_location);
        autoCompleteLocation .  setAutoCompleteTextListener ( this 
);
        autoCompleteLocation .  setOnSearchListener ( this 

);
  }
} 

AutoCompleteText Listener:

 @Override  public  void 
 onTextClear () {
    mMap . 


 clear ();
  }

   @Override  public  void  onItemSelected ( AutocompletePrediction 
 selectedPrediction) {
     Log .  i (getClass () .  getSimpleName (),  " Ein Autovervollständiger hat ausgewählt: " 

);
    logAutocomplete (selectedPrediction);
  } 

Ortslistener (Wenn dieser Listener eingestellt ist, wird nach Auswahl einer Vorhersage der zugehörige Ort automatisch durchsucht.):

 ... 
 AutocompleteLocation  autoCompleteLocation  = 

        ( AutocompleteLocation ) findViewById ( R .  id . 
 autocomplete_location);
     ... 
 //  Setzen Sie placeListener, um das Platzierungsobjekt automatisch zu berechnen, wenn AutocompletePrediction ausgewählt wurde. 

    autoCompleteLocation .  setPlaceListener ( this 

);
    
     //  Optional setze placeFields, um nur die Felder zu erhalten, die du brauchst. Standardmäßig Rückgabe-ID, NAME und LAT_LNG. 

    autoCompleteLocation .  setPlaceFields ( Arrays .  asList ( Place .  Field .  ID [19459016Place.  Field .  NAME ); 
 @Override  public  void  onPlaceLoad ( @NonNull  Ort 
 Ort) {
    addMapMarker (place . 
 getLatLng ());
  } 

Listener suchen:

 @Override  public  void  onSearch ( String  address,  List < AutocompletePrediction > 
 Vorhersagen) {
     für  ( AutocompletePrediction  Vorhersage : 


 Vorhersagen) {
      logAutocomplete (Vorhersage);
    }
  } 

Ergebnisse nach Land einschränken:

 ... 
 AutocompleteLocation  autoCompleteLocation  = 

        ( AutocompleteLocation ) findViewById ( R .  id . 
 autocomplete_location);
     ... 

    autoCompleteLocation .  setCountry ( " Au " ); 
   < com 
 .jesualex.autocompletelocation.AutocompleteLocation
       android :  id  =  " @ + id / autocomplete_location " 
 android :  layout_width  =  " match_parent " 
 android :  layout_height  =  " wrap_content [19659267]  App:  countryCode  =  " au "  /> 

Ergebnisse nach Grenzen einschränken:

 ... 
 AutocompleteLocation  autoCompleteLocation  = 

        ( AutocompleteLocation ) findViewById ( R .  id . 
 autocomplete_location);
     ... 
 RectangularBounds  bounds  =  RectangularBounds . 
 newInstance (
             neu  LatLng  ( -  33.880490  151.184363 
),
             neu  LatLng  ( -  33.858754  151.229596 


)
    );
    
    autoCompleteLocation .  setLocationBias (bounds); 

Get Place by Id:

 PlaceUtils .  getPlace (context,  " placeId  " neu  OnPlaceLoadListener 
 () {
       @Override 
 public  void  onPlaceLoad  ( @NonNull  place  place 
) {
        addMapMarker (place . 

 getLatLng ());
      }
    }); 

Attribute für benutzerdefinierte AutocompleteLocation

  • background_layout
  • closeIcon
   < com 
 .jesualex.autocompletelocation.AutocompleteLocation
       android :  id  =  " @ + id / autocomplete_location " 
 android :  layout_width  =  " match_parent " 
 android :  layout_height  =  " wrap_content [19659267]  app:  background_layout  =  " @ drawable / bg_rounded_accent " 
 app :  closeIcon  = [196590029" @ drawable / ic_close "  /> 

Beispiel

Um ein kleines Beispiel zu erhalten, laden Sie dieses Repo herunter, fügen Sie Ihren Google-API-Schlüssel in Werten hinzu und führen Sie es aus.












 Lizenziert unter Apache License, Version 2.0 (die "Lizenz");
Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden.
Eine Kopie der Lizenz erhalten Sie unter

 http://www.apache.org/licenses/LICENSE-2.0

Sofern nicht gesetzlich vorgeschrieben oder schriftlich vereinbart, Software
unter der Lizenz vertrieben wird auf einer "AS IS" -Basis verteilt,
OHNE GARANTIEN ODER BEDINGUNGEN JEGLICHER Art, entweder ausdrücklich oder stillschweigend.
In der Lizenz finden Sie die spezifische Sprache für die Berechtigungen und
Einschränkungen unter der Lizenz.

.

About AndroidWeltEditor

Check Also

New Android App Bundle and target API level requirements in 2021

Posted by Hoi Lam, Developer Relations Engineer, Android Platform In 2021, we are continuing with …

Leave a Reply

Your email address will not be published. Required fields are marked *