web-dev-qa-db-fra.com

Comment utiliser Google Maps hors ligne dans React Native

J'essaie de permettre aux utilisateurs d'utiliser des cartes hors ligne dans mon application native React, j'utilise react-native-maps

Je veux fournir le mode hors ligne uniquement pour une zone prédéfinie (disons une ville), donc je dois télécharger toutes les tuiles nécessaires qui seront un grand nombre d'images, donc je me demande s'il y a un moyen dans l'API google map télécharger une zone de la carte (comme dans l'application google map)?
à partir de la documentation, il est possible d'activer la mise en cache, ce que je fais la même chose (selon le doc) cependant, dans mon cas, je ne veux pas mettre en cache chaque endroit où l'utilisateur va, comme je l'ai dit Je veux juste mettre en cache/télécharger une zone prédéfinie.
EDIT 1
react-native-maps supporte la navigation hors ligne pour cela, je dois utiliser ce code:

 <LocalTile pathTemplate={this.state.pathTemplate} tileSize={256}/>

avec pathTemplate pointe vers mon emplacement de tuiles qui devait avoir la hiérarchie suivante:

location/{z}/{x}/{y}

donc mon vrai problème est de savoir comment obtenir les tuiles pour ma région.
Je peux le faire manuellement en enregistrant les tuiles de la tuile google maps serveur , cependant je ne sais pas si c'est légal et cela prendra aussi beaucoup de temps et de calcul zoom avant, je dois calculer la coordonnée des tuiles suivantes)
Ce sera donc bien, si l'API Google Map fournit un moyen de télécharger la vignette d'une zone (avec le zoom nécessaire),
une autre alternative serait d'utiliser un autre fournisseur de cartes comme OpenStreetMAp , mais ici aussi, je dois trouver un moyen de télécharger toutes les tuiles à la fois

8
aName

les mises à jour! J'ai également besoin d'utiliser le mode hors ligne react-native-maps car mapbox n'est toujours pas stable

1
Aya Magdy

À l'heure actuelle, le seul module réactif natif hors ligne qui prend en charge le mappage hors ligne est react-native-mapbox-gl.

<MapView>
<LocalTile
pathTemplate="../pathToLocalStoredTile.png"
tileSize={126}
/>
</MapView>

Cela pourrait vous aider.

Étant donné que le SDK Google Maps n'a pas cette implémentation, la seule possibilité hors ligne est d'utiliser des tuiles personnalisées.

0
Rishav Kumar