Comment créer des carreaux de la carte d'OpenStreetMap en mode hors connexion, afficher sur Android?
Ce que je veux c'est afficher un simple mode hors connexion à l'aide de la carte OpenStreetMap. Je ne trouve pas sur le web les bons outils pour créer des carreaux de la carte et l'utiliser pour afficher une carte dans Android. J'ai téléchargé les différentes ressources, mais il semble que je n'ai pas la moindre idée par où commencer. Je souhaite intégrer des images à partir d'OpenStreetMap à l'aide de JOSM mais je ne sais pas si je peux l'utiliser sur Android.
Puis-je utiliser Mapnik? Votre aide sera d'un grand merci.
- Oui, vous pouvez utiliser Mapnik. Mais cette question est hors-sujet ici. Vous devriez demander sur help.openstreetmap.org à la place.
- je ne pense pas que ce soit hors-sujet, mais u r droit à help.openstreetmap.org peut-être plus de l'OSM-experts
- merci pour les commentaires..d'autres idées que vous pouvez ajouter à ce sujet?
- J'ai été capable d'afficher une Carte, mais utilise internet " <uses-permission android:name="android.la permission.INTERNET" />". <--je ne veux pas utiliser ce. Je veux dire, un projet qui fonctionne en mode hors connexion. Je veux afficher une carte qui est stocké dans l'un des dossiers dans mon projet et l'afficher par programmation. Il doit être en mode hors connexion, et devrait être en mesure de zoomer/dézoomer. Merci de partager vos pensées dans cette. Merci monsieur tim pour effacer mes pensées. Merci de partager d'autres idées.
Vous devez vous connecter pour publier un commentaire.
Je suis actuellement en cours de développement (mon premier) de l'application Android en utilisant OpenStreetMap (OSM) de l'API, alors que je ne peux pas vous aider avec la JSOM, je peux essayer de l'aider avec l'OSM partie:
En supposant que vous souhaitez créer une nouvelle activité dans votre application android qui affiche simplement une carte OSM, vous pourriez commencer avec quelque chose comme ceci:
Où votre osm_map.xml mise en page pourrait ressembler à quelque chose comme ceci:
Dans la carte des tuiles, il est vraiment un super programme appelé Mobile Atlas Creator, ce qui vous permet de générer les tuiles de carte offline Android carte de mise en œuvre ci-dessus.
Une fois que vous avez installé l'application, et vous souhaitez créer un nouvel atlas, vous serez invité à sélectionner votre "souhaité altas format." Lors de cette pop-up, sélectionnez "Osmdroid zip."
Une fois que tout se charge, sélectionnez une région sur la carte que vous souhaitez créer des tuiles pour, sélectionnez le niveau de zoom que vous voulez en tuiles, puis cliquez sur "Ajouter la Sélection" bouton dans la colonne de gauche, suivi de "Créer de l'Atlas."
Oh, et selon la source, vous devez cocher la case "Créer/Ajuster les carreaux de la Carte" case pour forcer les tuiles à être exportés au format Png -- est-ce que quelqu'un sait si il est possible d'utiliser JPG avec OSM?
Une fois le ZIP a été produit, je l'ai renommé "Mapnik.zip" et déplacé dans un dossier nouvellement créé appelé "tuiles" dans mon Eclipse Android espace de travail de projet. Afin d'obtenir ce travail, j'ai également eu à ouvrir le fichier zip, et renommer le dossier de niveau supérieur de quelque chose comme "Google Earth" (selon l'origine de la carte que vous avez utilisée), à "Mapnik," pour que la vignette pour afficher dans mon application Android.
Afin de charger les tuiles sur votre téléphone, cependant, vous aurez besoin d'utiliser la BAD outil à partir du terminal. Dans votre BAD répertoire d'outils, vous aurez envie de lancer quelque chose comme ceci (chaque ligne est une nouvelle commande):
En fonction de la taille de la carte et de la vitesse de la mémoire du téléphone de bus, cette dernière étape peut prendre plusieurs minutes à une heure à compléter. Une fois cela fait, votre carte devrait fonctionner -- je l'espère!
Comme je l'ai mentionné, c'est la première fois que j'ai utilisé l'API OSM, donc je ne suis pas un expert en la matière, et je ne peux que commenter ce qui a fonctionné pour moi.
Espère que ce sera vous aider à obtenir commencé!
EDIT:
Je n'ai pas la chance de réellement exécuter le code que j'ai écrit jusqu'à hier, donc je n'ai pas l'attraper quelques-uns des erreurs. Je viens de créer un nouveau projet dans Eclipse, de lâcher mon code n', corrigé quelques choses et il a obtenu et en cours d'exécution. Toutes les modifications que j'ai effectuées sont reflétées dans le code ci-dessus! J'ai oublié de plusieurs de la base de déclarations d'importation, et j'ai oublié d'ajouter des autorisations à l'manifest.xml fichier.
Les dernières lignes de mon manifest.xml maintenant ressembler à ceci:
Et vous pouvez également ajouter ce manifeste, bien que certainement pas critique:
Ajouter ce droit après l'
<uses-sdk ... />
partie.En outre, assurez-vous d'importer les deux JAR bibliothèques:
et
Sans ce dernier POT, mon code gardé s'écraser jusqu'à ce que je me suis souvenu de l'inclure.
Assurez-vous de modifier les coordonnées par défaut de sorte qu'ils pointent vers un emplacement que vous avez effectivement des carreaux de la carte, sinon vous n'allez pas voir grand-chose, à côté d'une toile blanche.
Désolé de ne pas exécuter le code sur ma fin, d'abord!
Ici, étape par étape, une solution:
En bref:
1 - Vous devez télécharger les tuiles de carte à l'aide de Mobile Atlas Creator. J'ai expliqué les étapes ICI
2 - Déplacer le résultant fichier zip à
/mnt/sdcard/osmdroid/
sur votre appareil.3 - Ajout d' osmdroid-android-XXX.jar et slf4j-android-1.5.8.jar en chemin de création de votre projet
4 - Ajouter MapView: Vous pouvez ajouter une MapView à votre mise en page xml
Ou créer une MapView programme:
N'oubliez pas d'ajouter ces autorisations à votre Manifeste:
C'est une bonne Exemple De Projet.
J'espère que ça Aide 😉
Important
Comme @Scai mentionné: récemment, Open Street Map, a annoncé que cet outil n'est pas bon et a eu quelques problèmes:
Sinon pour la carte tuiles vous pouvez également utiliser des données vectorielles pour votre carte hors ligne, par exemple mapsforge ou la Mapbox SDK Android. Pour plus d'informations, consulter le wiki OSM sur offline OSM et Android bibliothèques.