У меня запущено geodjango с использованием openlayers и OpenStreetMaps с приложением администратора.
Теперь я хочу написать несколько представлений для отображения данных. По сути, я просто хочу добавить список точек (виден в админке) на карту.
Geodjango, кажется, использует специальный файл openlayers.js , чтобы творить чудеса в админе. Есть ли хороший способ взаимодействия с этим?
Как я могу написать представление / шаблон для отображения данных геоджанго в открытом окне карты улиц, как это видно у администратора?
В данный момент я копаюсь в файле openlayers.js и api в поисках «простого» решения. (У меня нет опыта работы с JS, так что это занимает некоторое время.)
В настоящее время я вижу, как это сделать, добавив следующее в качестве шаблона и используя django, чтобы добавить код, необходимый для отображения точек. (На примере здесь )
<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>
Так ли это, или есть лучший способ?