Home / Android-Entwicklung / Das Android Arsenal – Karten

Das Android Arsenal – Karten

DrawRoute

===========

DrawRoute umschließt die Google Directions-API (https://developers.google.com/maps/documentation/directions/) mit RxJava für Android-Entwickler kann Pfade auf der Karte sehr schnell und flexibel herunterladen, analysieren und zeichnen (derzeit nur JSON-Unterstützung).

Die Bibliothek enthält zwei Hauptteile.

  • RouteAPI ist für das Senden der Anfrage an verantwortlich. Die Richtungs-API von Google und die Verarbeitung der Antwort
  • DrawerAPI ist für das Zeichnen des Pfads auf der Karte verantwortlich.

Wenn Sie gradle verwenden: Schritt 1: Fügen Sie ihn am Ende der Repositorys in Ihr root build.gradle ein





 allprojects {
    Repositories {
        ...
        maven {url 'https://jitpack.io'}
    }}
} 

Schritt 2: Hinzufügen der Abhängigkeiten



 Abhängigkeiten {
      ...
   Implementierung 'com.github.malikdawar: drawroute: 1.0'
} 

Andernfalls müssen Sie die Bibliothek direkt in Ihrem Projekt verwenden.

Zuerst müssen wir den Pfad herunterladen. Dazu müssen wir zwei Punkte (Start und Ende) und den Reisemodus angeben.

 Schnittstelle  RouteApi 
 {
  fun  getJsonDirections 
 (
   Start :  LatLng 
,
   Ende :  LatLng 
,
   Modus :  TravelMode 
,
   apiKey :  String 

 ) :  Observable  < String? > 

?
}}

Wo der Reisemodus sein kann:

 enum  class  TravelMode 
 {
  FAHREN  WANDERN  FAHRRAD  TRANSIT 


}}

Wie Sie sehen können, gibt die obige Methode Observable zurück und unsere Antwort ist ein String. So weit so gut, wir haben die Route heruntergeladen, aber was solls – Antwort als String, ich möchte sie nicht alleine analysieren.

Mit RxJava und einigen Transformationen nichts einfacher.

Schauen Sie: [19659013] val routeRest = RouteRest ()
routeRest.getJsonDirections (
Quelle, Ziel, // Start- und Endpunkt
TravelMode . FAHREN // Reisemodus
" Ihr API-Schlüssel " // Google Maps API von GCP, stellen Sie sicher, dass Google Richtungen aktiviert ist
)
.observeOn ( AndroidSchedulers .mainThread ())
? .map {s > RouteJsonParser < Routen > (). parse (s, Routen :: class .java)}
.subscribe {r > routeDrawer.drawPath (r)}

Der wichtigste Teil hier ist

  .map {
 s  - >  RouteJsonParser  < Routen >  (). parse (s,  Routen  ::  Klasse 

 ].Java)
 }}
 

Weitere Informationen zum Kartenoperator finden Sie hier – https://github.com/ReactiveX/RxJava/wiki/Transforming-Observables#map Kurz gesagt, wir analysieren unsere Antwort auf das Routes-Objekt, sodass wir dies jetzt tun können Gehe, um den Pfad auf der Karte zu zeichnen.

Hier müssen wir DrawerApi verwenden, das vorerst eine Methode bietet:

 Spaß  drawPath  ( Routen  Routen); 

(Für den Moment wird die Verwendung des Routes-Objekts erzwungen.)

Wir sind fast da, aber bevor wir die Zeichenmethode aufrufen, müssen wir unsere Schublade mit RouteDrawerBuilder erstellen. Es erlaubt uns, den Pfad und die Markierungen ein wenig anzupassen. Es erfordert GoogleMap (!) Und wenn wir wollen, können wir





 - Markierungssymbol bereitstellen
- Pfadbreite
- Pfadfarbe
- Marker Alpha

Dies kann wie folgt aussehen:

 val  routeDrawer  =  RouteDrawer.RouteDrawerBuilder 
 (googleMap)
            .withColor (Kontext  !!  .getColorCompat ( R 
 .color.colorPrimary))
            .withWidth ( 13 
)
            .withAlpha ( 0.6f 
)
            .withMarkerIcon ( BitmapDescriptorFactory  .defaultMarker ( BitmapDescriptorFactory .  HUE_ORANGE 
))
            .build () 

Und alles zusammen:

 Klasse  YourFragment :  Fragment  (),  OnMapReadyCallback 

 {

     privat  var  googleMap :  GoogleMap ?  =  null 

 überschreiben  Spaß  onCreateView 
 (
         inflater :  LayoutInflater 
,
         Container :  ViewGroup 
?,
         savedInstanceState :  Bundle 
?
    ) :  Anzeigen 
? {
         return  inflater.inflate ( R  .layout.fragment_map_route, container,  false 


)
    }}

     überschreiben  Spaß  onViewCreated  ( Ansicht :  Ansicht  savedInstanceState :  Bundle 
?) {
         super 
 .onViewCreated (Ansicht, savedInstanceState)
         //  initialisierte Google Maps 
 val  mapFragment  = 

            childFragmentManager.findFragmentById ( R  .id.mapView)  als  SupportMapFragment 

        mapFragment.getMapAsync ( this 


)
    }}

     überschreiben  Spaß  onMapReady  ( p0 :  GoogleMap 
?) {
         this  .googleMap  = 

 p0

         val  source  =  LatLng  ( 31.490127  74.316971 )  // Startpunkt (LatLng) [19659090]  val Ziel  =  LatLng  ( 31.474316  74.316112 )  //  Endpunkt (LatLng) 

]
 
   //  Überprüfen Sie, ob die Karte initialisiert wurde. 

        googleMap ?.  run 
 {
             //  Rief die drawRouteOnMap-Methode auf, um die Polylinie / Route auf Google Maps zu zeichnen. 

 //  Erstellung einer Polylinie mit Attributen 
 val  routeDrawer  =  RouteDrawer.RouteDrawerBuilder  ( this 
)
            .withColor (Kontext  !!  .getColorCompat ( R 
 .color.colorPrimary))
            .withWidth ( 13 
)
            .withAlpha ( 0.6f 
)
            .withMarkerIcon ( BitmapDescriptorFactory  .defaultMarker ( BitmapDescriptorFactory .  HUE_ORANGE 


))
            .bauen()

         //  API-Aufruf zum Abrufen der Pfadpunkte von Google 
 val  routeRest  =  RouteRest 

 ()
        routeRest.getJsonDirections (
            Quelle, Ziel,  //  Start- und Endpunkt 
 TravelMode .  FAHREN  //  Reisemodus 

            getString ( R  .string.google_map_api_key)  //  Google Maps API von GCP, stellen Sie sicher, dass die Google-Anweisungen aktiviert sind 


        )
            .observeOn ( AndroidSchedulers 
 .mainThread ())
            ? .map {s  - >  RouteJsonParser  < Routen >  (). parse (s,  Routen  ::  class 
 .java)}
            .subscribe {r  - > 


 routeDrawer.drawPath (r)}
        }}
    }}
} 

Screenshot

Entwickelt von

Malik Dawar – malikdawar332@gmail.com

Lizenz

Copyright 2020 Malik Dawar

Lizenziert unter der Apache-Lizenz, 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, wird im Rahmen der Lizenz vertriebene Software "WIE BESEHEN" ohne ausdrückliche oder stillschweigende GARANTIEN ODER BEDINGUNGEN JEGLICHER ART verteilt. In der Lizenz finden Sie die spezifische Sprache für Berechtigungen und Einschränkungen unter der Lizenz.






.

About AndroidWeltEditor

Check Also

Android Developers Blog: Warteschlange der Verbesserungen

Gepostet von Jeff Vander Stoep, Android Security & Privacy Team und Chong Zhang, Android Media …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.