Mon (nano) expérience avec l'API Yandex.Maps ou pourquoi ai-je besoin d'instructions

Présentation


Je suis développeur Android et ...


Il m'est arrivé de terminer un petit projet (~ 500h), dans lequel au début il a été décidé d'utiliser l'API Yandex.Maps, car pourquoi utiliser Google maps pour Moscou s'il y en a le nôtre. Maintenant, je vais vous dire comment ça s'est passé.


Je n'ai pas fait de recherches approfondies sur la hotte et je ne dévoilerai aucun secret. Mais si, comme moi, vous devez commencer très rapidement (hier) à utiliser des cartes dans votre projet, j'espère pouvoir vous aider à gagner un peu de temps.


Si vous êtes trop paresseux pour lire, ou vous avez immédiatement besoin d'une conclusion, je l'envoie à la dernière "Action 4: C'est la fin / TL; DR"


Action 0: définitions


Commençons par les définitions: quoi, pourquoi, pourquoi.


Tâche : afficher une carte de Moscou, pour indiquer des endroits spécifiques avec des épingles, pour pouvoir construire un itinéraire de la position actuelle à un point spécifique (ou à plusieurs).
Technologie : API Yandex.Maps. Références à la documentation [1] ci-dessous.
Total : lire la documentation, implémenter les fonctionnalités.


Tout semble simple, ce qui pourrait mal tourner.


Étape 1: Rechercher


Avant d'étudier la documentation, vous devez la trouver. Recherche Yandex, bien sûr, nous serons dans Google - nous trouverons [2] ou [2] .ru [3]. Nous sommes des développeurs, nous voyons le bouton «pour les développeurs» - cliquez. L'énorme icône "Maps API" ressemble à ce dont nous avons besoin! (C'est un piège!)


Dans «... / maps» [4], nous n'attendons que des recherches, des déceptions et des souffrances sans fin. Ce qui ne m'a pas conduit à la documentation nécessaire.


Nous remontons d'une étape, descendons et trouvons MapKit [5] - nous y sommes. La navigation ici est assez triste, voici donc les liens importants - exemples android [6] et Documentation [7] (parfois vous pouvez trouver quelque chose d'utile ici).


Action 2: c'est parti


Trouvez Premiers pas et commencez. Au début, tout est simple.


À l'étape «Configurer la bibliothèque», des questions se posent. La vue et l'usine doivent être démarrées et arrêtées séparément, sinon, comme nous sommes informés, rien ne fonctionnera. Pourquoi? Et que se passera-t-il si quelque chose est commencé, mais pas, ou quelque chose a commencé plus tard? Et si quelques vues, alors pour chacune, vous avez besoin d'une usine, ou est-ce un singleton?


Peut-être que c'est juste QuickStart et ensuite nous trouverons une description détaillée! (non)


Voyons ce qu'il y a sur la documentation. Et c'est tout, rien d'autre. Il n'y a que de la documentation générée avec des commentaires comme:


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. 

Merci Yandex.


D'accord, sur le github il y a un autre projet avec des exemples d'utilisation [8]. À l'intérieur de chaque classe d'activité, il y a des commentaires sur ce qu'il fait et pourquoi il est nécessaire (après la documentation, c'est juste un cadeau du destin). Il existe plusieurs scénarios: créer une couche de carte personnalisée, créer un itinéraire pour une voiture, travailler avec des objets sur une carte et quelques autres.


L'API a-t-elle l'air puissante? Oui
Est-il clair comment l'utiliser dans des cas un peu plus compliqués que les exemples? Non. (
Comment comprendre ça? ¯_ (ツ) _ / ¯ Plongez tête baissée dans le code, selon les résultats de la recherche, vendez un livre sur ce que j'ai trouvé.


Action 3: Développement


Tâche 1: afficher une carte
Je n'ai rencontré aucune difficulté, tout est dans le guide.


Tâche 2: afficher les broches
Nous avons besoin de "MapObjectsActivity.java", ce que nous recherchons s'appelle des repères. Nous regardons dans le code pour comprendre quoi en faire.


Tâche 3: créer un itinéraire
Notre ami ici est «MasstransitRoutingActivity.java». Vous pouvez demander un itinéraire différent: uniquement en voiture, uniquement à pied, etc. à coup sûr, vous pouvez toujours prendre en compte le métro et d'autres choses différentes, mais je n'ai pas esquivé.


Tâche supplémentaire: positionnement direct et inverse. Il faut aussi pouvoir déterminer l'emplacement. Géocodage direct - déterminer les coordonnées par nom, l'inverse - déterminer le nom par coordonnées.


Pour résoudre ce problème, vous devrez retourner à la recherche et trouver la documentation de js [9]. Il semble beaucoup plus détaillé et volumineux (j'envie). Nous avons besoin d'une «demande de géocodage HTTP» [10] - il est assez clair de quoi il s'agit et comment l'utiliser. Il appartient à la mise en œuvre des requêtes-réponses http sur les téléphones mobiles.


Action 4: il s'agit de la fin / TL; DR


Résultats généraux:
Les cartes Yandex sont cool. Comment les utiliser n'est pas clair.


Bonne documentation pour «toucher» le service. Documentation affreuse pour en faire quelque chose. La structure des liens est "Vous trouverez du raifort", la qualité de la découverte est "Voici la roue, elle roule. Et puis vous-même pouvez facilement inventer une voiture, une fusée, un sous-marin. »


Faits saillants:
Comment afficher une carte dans un projet? Lien [7], tout est simple ici.
Comment ajouter une épingle à la carte? Mots-clés Placemark, MapObjects. Recherche dans les échantillons.
Comment construire un itinéraire? Mot-clé MasstransitRouting. Recherche dans les échantillons.
Comment faire autre chose? Recherche dans les échantillons. Sinon, vous avez un problème.


Références:


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


All Articles