{"id":1215,"date":"2010-12-31T17:55:26","date_gmt":"2010-12-31T16:55:26","guid":{"rendered":"http:\/\/j-mad.com\/blog\/?p=1215"},"modified":"2010-12-31T23:22:03","modified_gmt":"2010-12-31T22:22:03","slug":"django-easy-maps-cest-comme-google-maps-mais-dans-ton-site","status":"publish","type":"post","link":"https:\/\/j-mad.com\/blog\/2010\/12\/31\/django-easy-maps-cest-comme-google-maps-mais-dans-ton-site\/","title":{"rendered":"Django-easy-maps, c&#8217;est comme google maps, mais dans ton site"},"content":{"rendered":"<p>Cette ann\u00e9e se finira comme elle a commenc\u00e9, en bossant et avec beaucoup moins de temps que ce que j&#8217;aimerais en avoir. Il y a pas \u00e0 dire, il faut vraiment que je me remette \u00e0 jouer au loto, histoire de pouvoir r\u00eaver \u00e0 un jour, avoir tout le temps que j&#8217;aimerais avoir.<\/p>\n<p>Mais ne pas avoir de temps n&#8217;est pas une raison pour ne pas perp\u00e9tuer la tradition des django apps du mois. Surtout que cela fait d\u00e9j\u00e0 16 mois que je tiens, et que tout les mois, qu&#8217;il fasse chaud ou froid, que les zombies ou les ET menacent de nous \u00e9radiquer ou que le tout derniers MMO \u00e0 la mode sorte sa b\u00e9ta, je publie un billet de pr\u00e9sentation de django app.<\/p>\n<p>Et ce mois ci, je vais vous parler d&#8217;une app que j&#8217;ai d\u00e9couvert il n&#8217;y a que quelques dizaines jours mais qui est bien sympathique (il est m\u00eame possible que je l&#8217;utilise dans un contexte de business).<\/p>\n<p>Cette App c&#8217;est donc django-easy-maps.<\/p>\n<h2>1- O\u00f9 on le trouve, comment on l\u2019installe, tout \u00e7a quoi (et la doc)\u00a0?<\/h2>\n<p>Vous trouverez django-easy-maps sur sa page <a href=\"https:\/\/bitbucket.org\/kmike\/django-easy-maps\/src\">bitbucket<\/a> (enfin un projet qui a compris qu&#8217;il fallait utiliser mercurial parce que rien n&#8217;est mieux que mercurial).<br \/>\nMais vous aurez aussi le droit \u00e0 une <a href=\"http:\/\/pypi.python.org\/pypi\/django-easy-maps\/\">page pypi<\/a> (\u00e0 l&#8217;heure ou j&#8217;\u00e9cris, la version sur pypi est la 0.7).<\/p>\n<p>Pour l&#8217;installation, vous avez deux m\u00e9thodes\u00a0:<\/p>\n<ul>\n<li> un petit hg clone ( hg clone https:\/\/VOTREUSER@bitbucket.org\/kmike\/django-easy-maps )<\/li>\n<li> un pip ou un easy_install suivant votre pr\u00e9f\u00e9rence.<\/li>\n<\/ul>\n<p>La doc, elle, tient dans le fichier Readme du projet et dans les commentaires du code. Mais il faut bien avouer que vu la taille de l&#8217;app, c&#8217;est bien suffisant pour comprendre comment l&#8217;utiliser. Si vous voulez comprendre comment elle marche, la par contre, il faudra lire le code.<\/p>\n<h2>2- Mais au fait, \u00e0 quoi \u00e7a sert\u00a0?<\/h2>\n<p>Elle sert \u00e0 afficher une carte, directement tir\u00e9 de google maps, qui montre une adresse.<\/p>\n<p>Vous donnez l&#8217;adresse que vous voulez voir appara\u00eetre \u00e0 un templatetags et au moment du rendu, vous voyez appara\u00eetre un joli composant google maps, avec zoom, d\u00e9placage de la carte possible, etc etc. Et en plus, sans avoir besoin d&#8217;API Key google ou autre. Plut\u00f4t cool nan\u00a0?<\/p>\n<p>On peut de plus d\u00e9finir les tailles de la carte, passer un template custom ou utiliser le cache template django.<\/p>\n<h2>3- Comment \u00e7a marche\u00a0?<\/h2>\n<p>Tout d&#8217;abord il faut penser \u00e0 installer geopy qui est une d\u00e9pendance obligatoire. (par pip ou easy_install).<\/p>\n<p>Ensuite, c&#8217;est tout simple. On commence par loader le bon templatetags\u00a0:<br \/>\n{% load easy_maps_tags %}<\/p>\n<p>et ensuite on demande l&#8217;affichage de la carte\u00a0:<br \/>\n<!-- Default map with 300x400 dimensions --><br \/>\n{% easy_map &#8220;Russia, Ekaterinburg, Mira 32&#8221; 300 400 %}<\/p>\n<p>Si on veut personnaliser, on peut, en faisant par exemple\u00a0:<br \/>\n<!-- Variable address, custom detail level and custom template --><br \/>\n{% easy_map address 200 200 5 using &#8216;map.html&#8217; %}<\/p>\n<p>La syntaxe compl\u00e8te du templatetags \u00e9tant\u00a0:<\/p>\n<p>{% easy_map &lt; address &gt; [ &lt; width &gt; &lt; height &gt;] [&lt; zoom &gt;] [using &lt; template_name &gt;] %}<\/p>\n<p>Vu mes explications, vous pensez peut-\u00eatre qu&#8217;il n&#8217;y a pas de mod\u00e8les BD. En fait si. L&#8217;app stocke en effet la longitude et latitude en BD pour ne pas avoir \u00e0 les recalculer \u00e0 chaque fois.<\/p>\n<h2>4-Conclusion<\/h2>\n<p>Django-easy-maps est une petite app, qui fait pas forc\u00e9ment beaucoup de chose mais qui les fait bien. Et \u00e7a j&#8217;aime.<\/p>\n<p>Une pr\u00e9cision importante, elle fonctionne avec South, donc si vous avez mis en place South pour votre projet django, un simple .\/manage.py migrate easy_maps \u00e0 la place syncdb et \u00e7a roule \u2026<\/p>\n<h2>5-Conclusion bis<\/h2>\n<p>C&#8217;est donc avec django-easy-maps que je termine cette ann\u00e9e de django-apps du mois. J&#8217;esp\u00e8re que certains billets vous ont \u00e9t\u00e9 utile et vous ont fait d\u00e9couvrir des apps que vous utilisez maintenant quotidiennement.<\/p>\n<p>En tout cas, je vous souhaite un tr\u00e8s bon r\u00e9veillon 2010 et vous dit \u00e0 l&#8217;ann\u00e9e prochaine, en esp\u00e9rant que j&#8217;aurais le temps de tester l&#8217;app que j&#8217;ai pr\u00e9vu de vous pr\u00e9senter en janvier qui sera, cette fois-ci, une app d&#8217;une toute autre dimension (si j&#8217;ai le temps).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cette ann\u00e9e se finira comme elle a commenc\u00e9, en bossant et avec beaucoup moins de temps que ce que j&#8217;aimerais en avoir. Il y a pas \u00e0 dire, il faut vraiment que je me remette \u00e0 jouer au loto, histoire de pouvoir r\u00eaver \u00e0 un jour, avoir tout le temps que j&#8217;aimerais avoir. Mais ne &hellip; <a href=\"https:\/\/j-mad.com\/blog\/2010\/12\/31\/django-easy-maps-cest-comme-google-maps-mais-dans-ton-site\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Django-easy-maps, c&#8217;est comme google maps, mais dans ton site<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[35],"tags":[99,98],"class_list":["post-1215","post","type-post","status-publish","format-standard","hentry","category-la-django-app-du-mois","tag-django","tag-python"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p12cdp-jB","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/comments?post=1215"}],"version-history":[{"count":3,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1215\/revisions"}],"predecessor-version":[{"id":1217,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/1215\/revisions\/1217"}],"wp:attachment":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/media?parent=1215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/categories?post=1215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/tags?post=1215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}