Pour ce deuxième épisode du projet d’application mobile Android Nantes Mobi Parkings, nous présentons osmdroid, l’Open Street Map pour Android.
Open Street Map, une carte pour tous…
Vous êtes fan de l’open source, vous n’aimez pas les contraintes, votez Open Street Map !
Le projet est intéressant et mérite le détour. Pour les anglophones, vous pouvez avoir un aperçu des principales fonctionnalités sur switch2osm.
Pour les anglophobes et les personnes pressées, en voici un résumé :
- OSM est un projet coopératif fournissant gratuitement des données et services géographiques de part le monde. Il est même possible de faire une utilisation commerciale des données et ainsi de proposer des services payants. Les sceptiques pourront consulter la FAQ et trouver des réponses du style comment un projet comme celui-ci peut-il créer des cartes correctes/précises ? Et les curieux pourront jeter un oeil aux secrets de fabrication.
- OSM peut être utilisé via de nombreuses API. les plus connues sont Leaflet et OpenLayer pour le web, osmdroid pour Android.
- Les données OSM sont sous une licence d’utilisation dite “libre” qui impose de respecter ces deux règles : - Si vous modifiez ou utilisez les cartes ou données vous ne pouvez distribuer celles-ci que sous la même licence. Le texte légal complet détaille vos droits et responsabilités.
- Vous devez attribuer le “crédit” vos cartes à “OpenStreetMap and contributors”
Retour sur Omsdroid
Au vu de notre cible Android et dans l’idée d’utiliser des librairies open source, nous avons naturellement choisi d’utiliser osmdroid. A noter que lors de notre phase de prototypage, nous utilisions la classe MapView de l’API Android de Google. Dans un second temps, nous sommes revenus sur l’utilisation de l’Osmdroid, étant prévu pour être un remplaçant de cette classe nous n’avons pas trop souffert de ce changement d’API (c’est toujours bon à savoir).
L’installation d’omsdroid, consiste à télécharger quelques jar et à les positionner dans votre répertoire “libs”.
Pour ceux qui, comme nous, utilisent Maven, il vous faut :
- Utiliser ajouter le repository suivant :
<repository><br></br>
<id>osmdroid</id><br></br>
<url>https://oss.sonatype.org/content/groups/public/</url><br></br>
</repository><br></br>
- Ajouter les dépendances :
<dependency><br></br>
<groupId>org.osmdroid</groupId><br></br>
<artifactId>osmdroid-android</artifactId><br></br>
<version>3.0.8</version><br></br>
</dependency><br></br>
<dependency><br></br>
<groupId>org.slf4j</groupId><br></br>
<artifactId>slf4j-android</artifactId><br></br>
<version>1.6.1-RC1</version><br></br>
</dependency><br></br>
- Une fois installées, il vous reste à déclarer les permissions dans le fichier manifest de votre application Android :
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”/><br></br>
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”/><br></br>
<uses-permission android:name=”android.permission.ACCESS_WIFI_STATE” /><br></br>
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” /><br></br>
<uses-permission android:name=”android.permission.INTERNET” /><br></br>
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
Son utilisation est identique à la classe MapView de Google. A la différence de l’API Google, vous n’avez pas besoin de clé, à moins de passer par Cloudmate. Mais vous devez définir le fournisseur de tiles. Pour les anglophobes, tile se traduit par tuile. Elles correspondent à des images servant à la construction de la carte. Pour définir la source des tiles, on utilise la méthode “setTileSource” de la classe MapView d’osmdroid et la factory “TileSourceFactory”. Celle-ci permet d’afficher différents types de cartes, la différence se situe aux niveau des hébergeurs et du rendu des cartes. On peut par exemple avoir des cartes dédiées aux pistes cyclables.
Vous l’aurez compris, osmdroid vous permet d’intégrer rapidement des cartes OSM sur Android et ainsi de libérer votre créativité et d’utiliser des cartes appropriées à vos besoins.
Le prochain épisode mentionnera comment exploiter encore mieux ces cartes en y incorporant des chemins personnalisés (par exemple circulation routière).
N’hésitez donc pas à venir la télécharger sur le Google Play Store et nous faire partager vos impressions.