Demo: django-reploc

29 décembre 2011 15:48 dans django-reploc permet de gérer et d'afficher une liste de points d'intérêts sur une carte Google Map dans une application Django.
Slider Image

Description

django-reploc permet de gérer et d'afficher une liste de points d'intérêts sur une carte Google Map dans une application Django.

Liens utiles

http://pypi.python.org/pypi/django-reploc/0.1.1-pre1
http://bitbucket.org/codekoala/django-reploc

Installation

Version testée

0.1.1-pre1 | changeset 2cc600d36101

Modules à installer

easy_install django
easy_install geopy
easy_install django-reploc

Settings Django

TEMPLATE_CONTEXT_PROCESSORS = (
   ...
   'reploc.context_processors.representatives',
   ...
)

..

INSTALLED_APPS = (
   ...
   'reploc',
   ...
)

..

GOOGLE_MAPS_KEY = ''

Note: le paramètre GOOGLE_MAPS_KEY doit être renseigné en production.

Urls Django

urlpatterns = patterns(
    ...
    # reploc urls
    (r'^loc/', include('reploc.urls')),
    ...
)

import os
_cur_path = os.path.abspath(os.path.dirname(__file__))

urlpatterns += patterns('django.views.static',
        url(r'^reploc/(?P<path>.*), 'serve',
            {
                'document_root': os.path.join(_cur_path, 'media', 'reploc')
                }
            ),
        )

Templates files

Fichier à surcharger:

<project_path>/templates/reploc/locator.html

Contenu minimal:

{% extends 'base.html' %}
{% block title %}Representative Locator{% endblock %}
{% block extra-head %}

<script type="text/javascript" src="/reploc/js/jquery.js"></script>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key={{ GOOGLE_MAPS_KEY }}"
            type="text/javascript"></script>
<script type="text/javascript">
{% include 'reploc/locator.js' %}
</script>
{% endblock %}
{% block content %}
<h2>Representative Locator</h2>

<label for="reference-address">Address: </label>
<input type="text" id="reference-address" />
<label for="reference-radius">Radius: </label>
<select id="reference-radius">
    <option value="1">1 miles</option>

    <option value="2">2 miles</option>
    <option value="5">5 miles</option>
    <option value="10">10 miles</option>
</select>

<input type="button" value="Find Representatives" id="find-locations" />
<input type="button" value="Reset Map" id="reset-locations" />
<div id="location-matches"></div>
<div style="clear:both"></div>
<div id="representative-map" style="width: 690px; height: 500px; margin-top: 20px;"></div>
<h3 id="directions-title"></h3>
<div id="location-directions"></div>

{% endblock %}

Media files

Nous nous assurons juste de disposer de jQuery. Pour cela nous créeons les dossier suivant dans le lequel nous plaçons le fichier `jquery.js` (version récente de jQuery):

<project_path>/media/reploc/js

Lancement

$ python manage.py syncdb
$ python manage.py runserver

Screenshots

Partie administrateur

Reploc - admin_01Reploc - admin_02Reploc - admin_03Reploc - admin_04

Partie utilisateur

Reploc - live_01Reploc - live_02Reploc - live_03Reploc - live_04

Test

Les plus

  • Simple à installer, administer et skiner.
  • Gestion des itinéraires.

Les moins

  • La zone de recherche est affichée en gris transparent sur la carte. Pour trouver une adresse la zone prend toute la carte et la rend moins lisible <- couleur hard codée dans le le script locator.js.
  • Pas d'utilisation des `attributes` dans la template de démo. Ceux-ci doivent permettent d'associer une ou plusieurs images à une adresse selon un `attribut`.
  • Ne gère que les caractères ASCII dans la gestion des `Locations`.
  • Si une adresse n'est pas trouvée, les coordonnées correspondantes sont invalides. Il faut supprimer l'adresse et la recréer avec des valeurs correctement géocodées, autrement l'adresse reste en erreur et bloque toutes les recherches par la suite.

Sources et communauté

Code simple facile à appréhender. La partie javascript manque un peu d'options de configuration, ex.: couleur de la zone de recherche. C'est un bon exemple d'extension pour la gestion d'adresse dans une application.

Pas de follower pour le moment sur les différents repository.

Commentaires

Cette librairie facilite la gestion des points d'intérêts. Elle est simple à installer et à prendre en main.

Malheureusement elle ne gère pas les caractère unicode dans les adresses. De plus quelques bugs bloquants rendent sont utilisation moins attrayante, ex.: adresse invalide.

Le projet est encore jeune et encore assez basic. Dommage de ne pouvoir passer des options supplémentaires au client javascript ou bien de ne pas avoir plus d'exemples, ex.: gestion de la zone de recherche, gestion des `attributes`.

Pas de follower encore, pourquoi ne pas être les premiers.

Note

Installation   4

Administration 2
Utilisation    2
Intérêt        4
----          --
Total         12/20