Minha (nano) experiência com a API Yandex.Maps ou por que preciso de instruções

1. Introdução


Sou desenvolvedor Android e ...


Por acaso, terminei um pequeno projeto (~ 500h), no qual, no início, foi decidido usar a API Yandex.Maps, porque por que usar o Google Maps para Moscou, se houver o nosso. Agora vou lhe contar como foi.


Não conduzi pesquisas profundas e não abro segredos. Mas, se você, como eu, precisar muito rapidamente (ontem) começar a usar cartões em seu projeto, espero poder ajudar a economizar um pouco de tempo.


Se você está com preguiça de ler ou precisa de uma conclusão imediata, eu a envio para a última "Ação 4: este é o fim / TL; DR"


Ação 0: Definições


Vamos começar com as definições: o que, por que, por que.


Tarefa : exibir um mapa de Moscou, indicar locais específicos com pinos, ser capaz de construir uma rota da posição atual para um ponto específico (ou vários).
Tecnologia : API Yandex.Maps. Referências à documentação [1] abaixo.
Total : leia a documentação, implemente recursos.


Tudo parece simples, o que pode dar errado.


Etapa 1: Pesquisar


Antes de estudar a documentação, você precisa encontrá-la. Pesquise no Yandex, é claro, estaremos no Google - encontraremos [2] ou [2] .ru [3] Somos desenvolvedores, vemos o botão "para desenvolvedores" - clique em. O enorme ícone da "API do Google Maps" se parece com o que precisamos! (É uma armadilha!)


Em "... / maps" [4], estamos apenas esperando uma busca interminável, decepção e sofrimento. O que não me levou à documentação necessária.


Retrocedemos um passo, role para baixo e localize o MapKit [5] - aqui estamos. A navegação aqui é bastante triste, então, aqui estão os links importantes - amostras para Android [6] e Documentação [7] (às vezes você pode encontrar algo útil aqui).


Ação 2: Vamos lá


Encontre Introdução e comece. No começo, tudo é simples.


Na "Etapa 3. Configurar a biblioteca", surgem perguntas. A vista e a fábrica devem ser iniciadas e paradas separadamente, caso contrário, como somos informados, nada funcionará. Porque E o que acontecerá se algo for iniciado, mas algo não for, ou algo iniciado mais tarde? E, se houver algumas visualizações, para cada uma delas você precisa de uma fábrica ou é um singleton?


Talvez seja apenas o Início Rápido e, em seguida, encontraremos uma descrição detalhada! (não)


Vamos ver o que está na documentação. E isso é tudo, nada mais. Só existe documentação gerada com comentários 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. 

Obrigado Yandex.


Ok, no github há outro projeto com exemplos de uso [8]. Dentro de cada classe de atividade, há comentários sobre o que faz e por que é necessário (após a documentação, é apenas um presente do destino). Existem vários cenários: criando uma camada de mapa personalizada, construindo uma rota para um carro, trabalhando com objetos em um mapa e outros.


A API parece poderosa? Sim
Está claro como usá-lo em casos um pouco mais complicados que os exemplos? No. (
Como entender isso? ¯_ (ツ) _ / ¯ Mergulhe de cabeça no código, de acordo com os resultados da pesquisa, venda um livro sobre o que encontrei.


Ação 3: Desenvolvimento


Tarefa 1: exibir um mapa
Não encontrei nenhuma dificuldade, tudo está no guia.


Tarefa 2: exibir pinos
Precisamos de "MapObjectsActivity.java", o que procuramos é chamado de Marcadores. Pesquisamos no código para entender o que fazer com eles.


Tarefa 3: construir uma rota
Nosso amigo aqui é "MasstransitRoutingActivity.java". Você pode solicitar uma rota diferente: somente de carro, apenas a pé e assim por diante; com certeza você ainda pode levar em conta o metrô e outras coisas diferentes, mas eu não me esquivei.


Tarefa adicional: posicionamento direto e reverso. Também devemos ser capazes de determinar a localização. Geocodificação direta - determine as coordenadas por nome, o oposto - determine o nome por coordenadas.


Para resolver este problema, você precisará retornar à pesquisa e encontrar a documentação para js [9]. Parece muito mais detalhado e volumoso (invejo). Precisamos de uma "solicitação de geocodificação HTTP" [10] - é bem claro o que é e como usá-lo. Depende da implementação de respostas a solicitações http em telefones celulares.


Ação 4: este é o fim / TL; DR


Resultados gerais:
Cartões Yandex são legais. Como usá-los não é claro.


Boa documentação para "tocar" o serviço. Documentação horrível para fazer algo com isso. A estrutura dos links é "Você encontrará raiz-forte", a qualidade da descoberta é "Aqui está a roda, está rolando. E então você mesmo pode inventar facilmente um carro, um foguete, um submarino.


Destaques:
Como exibir um mapa em um projeto? Link [7], tudo é simples aqui.
Como adicionar um alfinete ao cartão? Palavras-chave Marcador, MapObjects. Pesquise em amostras.
Como construir uma rota? Palavra-chave MasstransitRouting. Pesquise em amostras.
Como fazer outra coisa? Pesquise em amostras. Se não estiver lá, você tem um problema.


Referências:


[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/

Source: https://habr.com/ru/post/pt480284/


All Articles