đŸ“± React Native + Google Map + Cluster ?

David Roman
Entrepreneur — Dev Full Stack
3 min readMay 25, 2017

Parce que beaucoup se posent la question !

De plus en plus tendance, React Native devient un framework incontournable ! Article un peu technique, mais vous pouvez rester si vous ĂȘtes curieux de voir ce qu’on peut faire avec RN 😀

Cet article va ĂȘtre trĂšs court, pour une fois ! Il est principalement destinĂ© Ă  toi dĂ©veloppeur ou Ă  toi qui veut aider ton pote !

A la fin, je vous donne un dĂ©pĂŽt GitHub pour avoir toutes les sources pour facilement copier/coller sur ton projet. Pas d’urgence donc !

Si cet article a Ă©tĂ© utile Ă  quelqu’un, n’hĂ©sites pas Ă  me lĂącher un petit ❀

Comme ça, je saurai que j’ai contribuĂ© un peu 😁

On ne va pas prĂ©senter ici React Native, mais plutĂŽt une façon simple de faire des clusters puisque je vois le sujet remonter de plus en plus sur StackOverflow et d’autres forums d’entraide.

1 — Creation du projet

Tu es nouveau sur React Native ou pas, on va commencer par déployer une solution RN. Pour cela, tu dois installer NodeJS sur ta machine ainsi que le package. Tout est ici : https://facebook.github.io/react-native/docs/getting-started.html

Tu dois impĂ©rativement installer un module qui vient de MapBox et qui s’appelle Supercluster.

npm install git://github.com/mapbox/supercluster — save

Pour le reste, j’utilise Bluebird juste pour une promise. Tu peux utiliser ce que tu veux. C’est juste un exemple !

2 — Mise en place de la map

Sur la nouvelle version de create-react-native-app, il y a déjà de préintégré tout un tas de modules natif. Notamment un dont nous avons besoin : la mapview !

Ne te fie pas Ă  la documentation (elle n’est pas Ă  jour), tu dois le dĂ©clarer comme ceci :

3 — Mise en place du cluster

Rien de plus simple pour utiliser ce cluster. Il suffit de l’importer, de le crĂ©er dans la fonction qui reçoit les nouvelles “props” et de conserver dans l’état du composant.

Comme tu peux le voir, je prĂ©fĂšre avoir plusieurs catĂ©gories de cluster afin de dissocier les types de markers mais bon
 c’est une autre histoire 😝

4 — Mise en place des markers

Voici la partie super importante : les markers et les données.

Si tu veux avoir un systùme API Driven le plus simple possible, tu dois ABSOLUMENT respecter le formalisme du geojson. 😡

Pour avoir une complĂšte documentation, va sur le site officiel !

Pour ĂȘtre sympa, je t’ai mis un exemple du formalisme des donnĂ©es dans les sources pour que tu puisses jouer avec. 😘

Tu dois dĂ©clarer utiliser un composant Marker pour te permettre d’avoir une abstraction sur les propriĂ©tĂ©s du geojson. Cela te permet d’avoir facilement un petit switch qui va arranger le rendu comme tu le voudrais ! Et en plus, tu n’as mĂȘme pas besoin de te prendre la tĂȘte sur le formalisme des donnĂ©es puisque tu respectes dĂ©jĂ  un standard bien connu ! 😎

Encore un conseil, utilise au MINIMUM des vues dans le marqueur, sinon cela va te bouffer les performances ! Essaie de prĂ©mĂącher le travail en faisant un png que tu afficheras. Si tu dois avoir plusieurs couleurs diffĂ©rentes alors, joue sur la teinte de l’image ! Moins il y a de vue, moins il y a d’images diffĂ©rentes et plus c’est performant ! đŸ€“

5 — Les sources

Comme tu commences un peu à me connaütre si tu lis mes autres articles (tu les lis, n’est-ce pas ?), je te file les sources pour que tu puisses tester là maintenant !😜

Comme ça, tu pourras déjà avoir un truc entre les mains et facilement copier/coller mon code pour le mettre dans ton application.

N’oublie pas que lorsque tu as tĂ©lĂ©chargĂ© le code source, tu dois utiliser les commandes suivantes :

Sinon, bah tu n’auras pas installĂ© les modules dont dĂ©pend le projet ! De plus, si tu ne dĂ©marres pas le serveur RN
 Bah ça ne marche pas ! (et n’oublie pas d’ĂȘtre sur le mĂȘme rĂ©seau wifi)

--

--