EasyRoutes le permite rastrear rutas fácilmente a través de la API de direcciones de Google Maps.
Nota: Debe generar una clave de API desde la consola de Google con la API de indicaciones y agregar el permiso de INTERNET en el manifiesto.
Configurar
Gradle: agregue su build.gradle raíz.
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
Agregue la dependencia en su aplicación build.gradle.
dependencies {
implementation 'com.github.AntonioHReyes:EasyRoutes:$version'
}
si tiene el siguiente error:
Caused by: org.gradle.api.InvalidUserCodeException: Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 'build.gradle'
cambie su configuración. Gradle a:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories {
google()
mavenCentral()
jcenter() // Warning: this repository is going to shut down soon
maven { url 'https://jitpack.io' }
}
}
De lo contrario, debe usar la biblioteca directamente en su proyecto.
USAR
Primero debe definir una instancia de EasyRoutesDirections con la que pueda pasar propiedades para consultar la API de Google Directions.
un ejemplo completo de propiedades:
val placeDirections = EasyRoutesDirections(
originPlace = "Ixhuatlán del café, Veracruz, México",
destinationPlace = "Hermosillo, Sonora, México",
apiKey = getString(R.string.google_maps_key),
waypointsLatLng = arrayListOf(
LatLng(20.077550759401632, -98.36895687240255),
LatLng(19.43488491844211, -99.13136781301444)
),
waypointsPlaces = arrayListOf(
"Santiago de Queretaro",
"Aguascalientes"
),
showDefaultMarkers= false,
transportationMode = TransportationMode.WALKING
)
Puede mezclar lugares de origen y destino LatLng y String.
val placeAndLatLng = EasyRoutesDirections(
originPlace = "Oaxaca",
destinationLatLng = LatLng(19.417708496429597, -102.05174097597963),
apiKey = getString(R.string.google_maps_key)
)
val latLngAndPlace = EasyRoutesDirections(
originLatLng = LatLng(19.417708496429597, -102.05174097597963),
destinationPlace = "Merida, Yucatan, México",
apiKey = getString(R.string.google_maps_key)
)
Nota: No es posible definir dos orígenes o dos destinos.
una descripción de las propiedades:
Parámetro | Chico | Descripción |
---|---|---|
api_key |
String |
Necesario. Tu clave de API de Google Cloud |
originLatLng |
LatLng |
Tu origen en los valores de latitud y longitud |
originPlace |
String |
Su origen en formato String, por ejemplo Oaxaca |
destinationLatLng |
LatLng |
Su destino en valores de latitud y longitud |
destinationPlace |
String |
Su destino en formato String por ejemplo Aguascalientes |
waypointsLatLng |
Array<LatLng> |
Especifica una serie de posiciones intermedias en valores de latitud y longitud |
waypointsPlaces |
Array<String> |
Especifica una matriz de posiciones intermedias en formato de cadena |
transportationMode |
TransportationMode |
Especifique que el modo de transporte que se utilizará de forma predeterminada es CONDUCCIÓN |
showDefaultMarkers |
Boolean |
Marcar para mostrar marcadores predefinidos en el origen y el destino |
posteriormente es necesario definir un EasyDrawer Builder para personalizar la ruta.
val routeDrawer = EasyRoutesDrawer.Builder(mMap)
.pathWidth(10f)
.pathColor(Color.GREEN)
.geodesic(true)
.previewMode(false)
.build()
una descripción de las propiedades:
Parámetro | Chico | Descripción |
---|---|---|
pathWidth |
Float |
El ancho de su camino dibujado por defecto es 12f |
pathColor |
Int |
El color de su ruta por defecto es Color.MAGENTA |
geodesic |
Boolean |
Especifica si dibujar cada segmento de esta polilínea como una geodésica es verdadero por defecto |
previewMode |
Boolean |
Especifique la propiedad para dibujar la ruta si es verdadero selecciona la vista general La polilínea predeterminada es verdadera |
Nota: si desea visualizar la ruta con precisión, use previewMode en falso.
puede pasar una polilínea personalizada para un mejor manejo.
val customPolylineOptions = PolylineOptions()
customPolylineOptions.color(ContextCompat.getColor(this@MapsActivity, R.color.red))
customPolylineOptions.width(15f)
val routeDrawerWithCustomPolyline = EasyRoutesDrawer.Builder(mMap, customPolylineOptions)
.previewMode(false)
.build()
finalmente use una función de extensión de mapa para el dolor de ruta.
mMap.drawRoute(
context = this@MapsActivity,
easyRoutesDirections = placeDirections,
routeDrawer = routeDrawer,
markersListCallback = {markers -> markersList.addAll(markers) },
googleMapsLink = { url -> Log.d("GoogleLink", url)}
){ legs ->
legs?.forEach {
Log.d("Point startAddress:", it?.startAddress.toString())
Log.d("Point endAddress:", it?.endAddress.toString())
Log.d("Distance:", it?.distance.toString())
Log.d("Duration:", it?.duration.toString())
}
}
puedes usar markersListCallback
para que los marcadores de origen y destino se pinten de forma predeterminada. puedes usar googleMapsLink
para obtener la URL de Google Maps con la ruta. puedes usar legsCallback
para obtener la distancia y la duración de los puntos de la ruta.
complemento que puedes usar getGoogleMapsLink
para obtener una URL de Google Maps con la ruta:
binding.mapsDirections.setOnClickListener {
val url = getGoogleMapsLink(placeDirections) //EasyRouteDirections instance like parameter
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(intent) //Open google maps native app
}
puede eliminar la ruta y los marcadores con:
routeDrawer.removeRoute()
routeDrawerWithCustomPolyline.removeRoute()
markersList.forEach {
it.remove()
}
Captura de pantalla
Cómprame un café
Desarrollado por
Antonio Huerta Reyes – antonio.huertaryes@gmail.com
.