Introduccion
Soy un desarrollador de Android y ...
Por casualidad terminé un pequeño proyecto (~ 500h), en el que al principio se decidió usar la API Yandex.Maps, porque ¿por qué usar mapas de Google para Moscú si existen? Ahora te diré cómo te fue.
No realicé una investigación profunda y no revelaré ningún secreto. Pero, si usted, como yo, necesita comenzar rápidamente (ayer) a usar tarjetas en su proyecto, espero poder ayudarlo a ahorrar algo de tiempo.
Si eres demasiado vago para leer o necesitas una conclusión de inmediato, lo envío a la última "Acción 4: Este es el final / TL; DR"
Acción 0: Definiciones
Comencemos con las definiciones: qué, por qué, por qué.
Tarea : mostrar un mapa de Moscú, indicar lugares específicos con alfileres, poder construir una ruta desde la posición actual a un punto específico (o a varios).
Tecnología : Yandex.Maps API. Referencias a la documentación [1] a continuación.
Total : lea la documentación, implemente las funciones.
Todo parece simple, lo que podría salir mal.
Paso 1: búsqueda
Antes de estudiar la documentación, debe encontrarla. Busque Yandex, por supuesto, estaremos en Google, encontraremos [2] o [2] .ru [3] Somos desarrolladores, vemos el botón "para desarrolladores" - haga clic. ¡El enorme icono "API de Maps" se parece a lo que necesitamos! (¡Es una trampa!)
En "... / mapas" [4] solo estamos esperando una búsqueda interminable, desilusión y sufrimiento. Lo que no me llevó a la documentación necesaria.
Retrocedemos un paso, nos desplazamos hacia abajo y encontramos MapKit [5], aquí estamos. La navegación aquí es bastante triste, así que aquí están los enlaces importantes: muestras de Android [6] y Documentación [7] (a veces puedes encontrar algo útil aquí).
Acción 2: vamos
Encuentra Primeros pasos y primeros pasos. Al principio, todo es simple.
En el "Paso 3. Configurar la biblioteca" surgen preguntas. La vista y la fábrica deben iniciarse y detenerse por separado, de lo contrario, como nos informan, nada funcionará. Por qué ¿Y qué sucederá si algo se inicia, pero algo no, o algo comenzó más tarde? Y si unas pocas vistas, entonces para cada uno necesita una fábrica, o es un singleton?
¡Tal vez esto sea solo un inicio rápido y luego encontraremos una descripción detallada! (no)
Veamos qué hay en la documentación. Y eso es todo, nada más. Solo se genera documentación con comentarios como:
Class MapKitFactory Methods getInstance() - Gets the MapKit factory instance. initialize(Context context) - Initializes the MapKit factory. setApiKey(String apiKey) - Sets the API key to use for requests.
Gracias Yandex
Bien, en el github hay otro proyecto con ejemplos de uso [8]. Dentro de cada clase de actividad, hay comentarios sobre lo que hace y por qué es necesario (después de la documentación, esto es solo un regalo del destino). Hay varios escenarios: crear una capa de mapa personalizada, construir una ruta para un automóvil, trabajar con objetos en un mapa y algunos otros.
¿La API parece poderosa? Si
¿Está claro cómo usarlo en casos un poco más complicados que los ejemplos? No. (
¿Cómo entender esto? ¯_ (ツ) _ / ¯ Sumérgete de lleno en el código, según los resultados de la investigación, vende un libro sobre lo que encontré.
Acción 3: desarrollo
Tarea 1: mostrar un mapa
No encontré ninguna dificultad, todo está en la guía.
Tarea 2: pines de pantalla
Necesitamos "MapObjectsActivity.java", lo que estamos buscando se llama Placemarks. Buscamos en el código para entender qué hacer con ellos.
Tarea 3: construir una ruta
Nuestro amigo aquí es "MasstransitRoutingActivity.java". Puede solicitar una ruta diferente: solo en automóvil, solo a pie, etc. seguro que aún puedes tener en cuenta el metro y otras cosas diferentes, pero no me agaché.
Tarea adicional: posicionamiento directo e inverso. También debemos poder determinar la ubicación. Geocodificación directa: determine las coordenadas por nombre, lo contrario: determine el nombre por coordenadas.
Para resolver este problema, deberá volver a la búsqueda y encontrar la documentación para js [9]. Parece mucho más detallado y voluminoso (envidio). Necesitamos una "solicitud de geocodificación HTTP" [10]: está bastante claro qué es y cómo usarla. Depende de la implementación de las solicitudes-respuestas http en teléfonos móviles.
Acción 4: Este es el final / TL; DR
Resultados generales:
Las tarjetas Yandex son geniales. Cómo usarlos no está claro.
Buena documentación para "tocar" el servicio. Documentación horrible para hacer algo con eso. La estructura de los enlaces es "Encontrarás rábano picante", la calidad del hallazgo es "Aquí está la rueda, está rodando. Y entonces usted mismo puede inventar fácilmente un automóvil, un cohete, un submarino ".
Destacados:
¿Cómo mostrar un mapa en un proyecto? Enlace [7], todo es simple aquí.
¿Cómo agregar un pin a la tarjeta? Palabras clave Marca de posición, MapObjects. Buscar en muestras.
¿Cómo construir una ruta? Palabra clave MasstransitRouting. Buscar en muestras.
¿Cómo hacer otra cosa? Buscar en muestras. Si no está allí, entonces tienes un problema.
Referencias
[1] - https://tech.yandex.com/maps/
[2] - https://tech.yandex.com/
[3] - https://tech.yandex.ru/
[4] - https://tech.yandex.com/maps/
[5] - https://tech.yandex.com/maps/mapkit/
[6] - https://github.com/yandex/mapkit-android-demo
[7] - https://tech.yandex.com/maps/doc/mapkit/3.x/concepts/about-docpage/
[8] - https://github.com/yandex/mapkit-android-demo/tree/master/src/main/java/com/yandex/mapkitdemo
[9] - https://tech.yandex.com/maps/doc/jsapi/2.1/quick-start/index-docpage/
[10] - https://tech.yandex.com/maps/doc/geocoder/desc/concepts/input_params-docpage/