Flightmap SDK aprovecha el poder del MBGL SDK de código abierto para representar nuestro conjunto de datos de mapas personalizados. Nuestro SDK es compatible con la versión actual: v1.0.3.6
y las siguientes características:
Instalar el SDK de Flightmap
Antes de comenzar a desarrollar su aplicación con Flightmap SDK, deberá agregar el SDK como una dependencia. Puede encontrar la siguiente dependencia que se proporciona a continuación en el repositorio de MavenCentral. Si su aplicación está cerca o supera el límite de conteo de métodos de 65k, puede mitigar este problema habilitando ProGuard dentro de su aplicación. Las directivas de ProGuard se incluyen en las dependencias de Android para conservar las clases requeridas. También puede reducir el tamaño del archivo APK haciendo uso de la división de APK.
Agrega la dependencia
Inicie Android Studio
Proyecto Android debe estar en Android X
Estudio Android 3.+
Abre el archivo build.gradle de tu aplicación.
Asegúrese de que la minSdkVersion de su proyecto esté en API 14 o superior.
En dependencias, agregue una nueva línea de dependencia de implementación para el último flightmap-android-sdk.
Busque el archivo en la barra de herramientas y luego haga clic en Sincronizar proyecto con archivos Gradle.
Nota: Agregue la siguiente dependencia al archivo project/app/build.gradle de su módulo de aplicación:
dependencias {
implementación 'com.flightmap.flightmapsdk:flightmap:1.0.3.6'
}
Nota: Agregue Maven en el archivo build.gradle del proyecto en todos los repositorios del proyecto
todos los proyectos {
repositorios {
Google()
jcentro()
experto {url 'https://dl.bintray.com/flightmap/com.flightmap' }
}
}
Además, ejecutar gradle app_module_name_here:dependencies en su línea de comando imprimirá una lista de dependencias. ./gradlew app:dependencies funciona si tiene un contenedor de Gradle. Son útiles para solucionar problemas de configuraciones ágiles de Gradle cuando se incluyen varias bibliotecas en un solo proyecto. Puede ver las dependencias que traen bibliotecas específicas y dónde pueden estar ocurriendo conflictos.
Obtener un token de acceso
Copie su token público predeterminado en su portapapeles. Después de agregar Maps SDK como una dependencia dentro de su proyecto de Android, abra el archivo R.strings.xml, cree un nuevo recurso de cadena y pegue el token de acceso.
Luego, para pasar esto al SDK de Flightmap, deberá colocar el token de acceso dentro del método onCreate() de su aplicación.
La clase pública MyApplication extiende la aplicación {
@Anular vacío público onCreate() {
super.onCreate ()
// Token de acceso al mapa de vuelo
Mapbox.getInstance(getApplicationContext(), getString(R.string.flightmap_access_token))
}
}
El SDK de Flightmap también proporciona un método setToken() en caso de que desee cambiar el token de acceso de Flightmap en tiempo de ejecución.
Mapbox.setAccessToken(FLIGHTMAP_ACCESS_TOKEN);
Permisos de configuración
A partir de la versión 5.0 del SDK de Maps, puede usar la función de combinación de manifiestos para reducir la necesidad de incluir elementos necesarios del SDK de Maps dentro del archivo de manifiesto de su aplicación. Deberá agregar el permiso de ubicación Fino o Grueso si planea mostrar la ubicación de un usuario en el mapa u obtener la información de ubicación del usuario. El permiso de ubicación del usuario también debe verificarse durante el tiempo de ejecución mediante PermissionsManager.
Agregar un mapa
Abra el archivo Java de la actividad en la que desea incluir el mapa y agregue el siguiente código al archivo.
privado MapView mapView;
@Override protected void onCreate(Paquete de estado de instancia guardado) {
super.onCreate (estado de instancia guardado)
Mapbox.getInstance(esto, getString(R.string.flightmap_access_token*
setContentView (R.layout.activity_main)
mapView = (MapView) findViewById (R.id.mapView)
mapView.onCreate(estadoDeInstanciaGuardado(
mapView.getMapAsync(nuevo OnMapReadyCallback() {
@Anular el vacío público enMapReady(@NonNull MapboxMap mapboxMap) {
mapboxMap.setStyle(Style.DARK, nuevo Style.OnStyleLoaded() {
@Anular
public void onStyleLoaded@(estilo de estilo no nulo) {
// El mapa está configurado y el estilo se ha cargado. Ahora puede agregar datos o hacer otros ajustes en el mapa
}
})
}
})
}
Para establecer el estilo con URL.
mapboxMap.setStyle(nuevo Estilo.Builder().fromUri("https://maps.flightmap.io/styles/style-dark.json"),
nuevo Estilo.OnStyleLoaded() {
@Override public void onStyleLoaded(@NonNull Estilo de estilo) {
}
})
Abra el archivo de diseño XML de la actividad y agregue mapView dentro de su diseño.
<com.mapbox.mapboxsdk.maps.MapView
android:id="@+id/vistaMapa"
android: layout_width = "match_parent"
android: layout_height = "match_parent"
/>
métodos de ciclo de vida
MapView contiene sus propios métodos de ciclo de vida para administrar el ciclo de vida de OpenGL de Android, que debe llamarse directamente desde la actividad que lo contiene. Para que su aplicación llame correctamente a los métodos de ciclo de vida de MapView, debe anular los siguientes métodos de ciclo de vida en la actividad que contiene MapView y llamar al método de MapView respectivo. Por ejemplo, su método onStart() debería verse así:
@Anular
vacío protegido onStart() {
super.onStart()
VistaMapa.onStart()
}
Al igual que la anulación de onStart() anterior, los siguientes métodos de ciclo de vida también deben anularse e incluir el método MapView coincidente:
@Anular
protected void onResume () {
super.onResume ()
mapView.onReanudar()
}
@Anular
protected void onPause () {
super.onPausa()
VistaMapa.onPause()
}
@Anular
protected void onStop () {
super.onStop()
VistaMapa.onStop()
}
@Anular
protected void onSaveInstanceState (Bundle outState) {
super.onSaveInstanceState(outState) mapView.onSaveInstanceState(outState) }
@Anular
vacío público enLowMemory() {
super.onLowMemory()
mapView.onLowMemory()
}
@Anular
protected void onDestroy () {
super.onDestroy ()
mapView.onDestroy()
}
Si está utilizando un fragmento, llame a mapview.onDestroy() dentro del método onDestroyView() del fragmento en lugar de dentro de onDestroy():
@Anular
vacío público onDestroyView () {
super.onDestroyView()
VistaMapa?.onDestroy()
}
Agregar marcador
Los marcadores son útiles para identificar un solo punto en el mapa. El SDK viene con un ícono de marcador predeterminado que se puede configurar para satisfacer sus necesidades específicas. Las API están expuestas para cambiar opcionalmente este ícono a cualquier imagen de mapa de bits que desee. Para crear un marcador para su mapa, solo debe proporcionar una posición LatLng que define dónde se colocará el marcador en el mapa. Llama a mapboxMap.addMarker() para agregar el marcador al mapa.
mapboxMap.addMarker(nuevas opciones de marcador()
.position(nueva LatLng(48.85819, 2.29458))
.title("Torre Eiffel"))
Agregue una lista de marcadores usando mapboxMap.addMarkers() si tiene muchos marcadores o los está cargando desde un archivo GeoJSON.
Quitar marcadores
Flightmsp Android SDK viene con dos métodos para eliminar marcadores. Si desea eliminar un marcador en particular, use mapboxMap.removeMarker() mientras pasa el objeto de marcador que se eliminará. Si desea eliminar todos los marcadores, llame al método mapboxMap.clear(). Tenga en cuenta que esto también eliminará cualquier polilínea y polígono que haya agregado a su mapa.
Personalizar icono de marcador
Puede especificar un icono personalizado utilizando el objeto IconFactory y pasándolo al marcador. El icono de marcador predeterminado se utiliza si no especifica un icono al crear su marcador. El anclaje del marcador estará en el centro, lo que significa que si tiene un ícono con un punto, deberá agregar relleno en la parte inferior de la imagen.
IconFactory iconFactory = IconFactory.getInstance(ActividadPrincipal.este)
Icono icono = iconFactory.fromResource(R.drawable.blue_marker)
mapboxMap.addMarker(nuevas opciones de marcador()
.position(nueva LatLng(48.85819, 2.29458))
.icono(icono))
Añadir polilínea
Agregar una línea o un polígono a su mapa es como agregar un marcador. Debido a la naturaleza de estos objetos, se exponen diferentes API, como el color del polígono o el ancho de la línea. En lugar de tomar una sola posición, agrupe todos sus objetos LatLng dentro de una Lista y luego páselos usando el método addAll().
mapboxMap.addPolyline(nuevas PolylineOptions()
.addAll(puntos)
.color(Color.parseColor("#3bb2d0"))
.ancho(2))