Comment afficher des données en utilisant Openlayers avec OpenStreetMap dans geodjango?

J'ai geodjango exécute à l'aide d' openlayers et Openstreetmap avec l'admin app.

Maintenant, je veux écrire quelques points de vue pour afficher les données. En gros, je veux juste ajouter une liste de points (vu dans l'admin) de la carte.

Geodjango semble utiliser un spécial openlayers.js fichier à faire c'est de la magie dans l'admin. Est-il une bonne façon de faire l'interface avec cela?

Comment puis-je écrire un affichage ou un modèle pour afficher les geodjango données open street map fenêtre, comme on le voit dans l'admin?

En ce moment, je suis creuser la openlayers.js fichier et de l'api à la recherche d'un "simple" solution. (Je n'ai pas de js expérience, c'est donc prendre un certain temps).

La façon actuelle je peux voir pour ce faire est d'ajouter ce qui suit comme un modèle, et l'utilisation de django pour ajouter le code nécessaire à l'affichage de points. (Basé sur l'exemple ici)

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Draw Feature Example</title>
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript">
var map;
function init(){
map = new OpenLayers.Map('map');
var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
map.addLayer(layer);
/*
* Layer style
*/
// we want opaque external graphics and non-opaque internal graphics
var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
layer_style.fillOpacity = 0.2;
layer_style.graphicOpacity = 1;
/*
* Blue style
*/
var style_blue = OpenLayers.Util.extend({}, layer_style);
style_blue.strokeColor = "blue";
style_blue.fillColor = "blue";
style_blue.graphicName = "star";
style_blue.pointRadius = 10;
style_blue.strokeWidth = 3;
style_blue.rotation = 45;
style_blue.strokeLinecap = "butt";
var vectorLayer = new OpenLayers.Layer.Vector("Simple Geometry", {style: layer_style});
// create a point feature
var point = new OpenLayers.Geometry.Point(-111.04, 45.68);
var pointFeature = new OpenLayers.Feature.Vector(point,null,style_blue);
// Add additional points/features here via django
map.addLayer(vectorLayer);
map.setCenter(new OpenLayers.LonLat(point.x, point.y), 5);
vectorLayer.addFeatures([pointFeature]);
}
</script>
</head>
<body onload="init()">
<div id="map" class="smallmap"></div>
</body>
</html>

Est-ce comment il est fait, ou est-il un meilleur moyen?

source d'informationauteur monkut