Ho geodjango in esecuzione utilizzando openlayers e OpenStreetMaps con l'app di amministrazione.Come visualizzare i dati utilizzando gli openlayer con OpenStreetMap in geodjango?
Ora voglio scrivere alcune viste per visualizzare i dati. Fondamentalmente, voglio solo aggiungere una lista di punti (visti nell'amministratore) alla mappa.
Geodjango sembra utilizzare un file speciale per fare la sua magia nell'amministratore. C'è un buon modo per interfacciarti con questo?
Come posso scrivere una vista/modello per visualizzare i dati di geodjango su una finestra della mappa stradale aperta, come si vede nell'amministratore?
Al momento, sto scavando nel file openlayers.js e api in cerca di una soluzione 'facile'. (Non ho esperienza js, quindi ci vorrà del tempo.)
Il modo corrente che posso vedere per fare ciò è aggiungere il seguente come modello e usare django per aggiungere il codice necessario per visualizzare i punti. (Basato sul esempio here)
<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>
E 'questo come si fa, o c'è un modo migliore?
Penso che il metodo migliore è quello di creare una vista Django che restituisce l'oggetto JSON necessaria per i dati necessari. – monkut