2011-08-21 28 views
1

我在django内部使用olwidget来绘制一些地图。在我的一种形式中,我要求用户提供位置和半径。该位置是使用olwidget提供的OpenLayers地图输入的,半径是jquery-ui中的滑块。在django的olwidget上绘制半径

我想要做的是在地图上绘制一个半径圆,用户在操作滑块时进行更新。

我无法获得olwidget创建的OpenLayers地图的引用。这olwidget产生这样长相的源代码:

<textarea id="id_zone_centroid_zone_centroid" rows="10" cols="40" name="zone_centroid">SRID=4326;POINT (-75.6981940000000009 45.4115719999999996)</textarea> 
<script type="text/javascript"> 
    new olwidget.Map("id_zone_centroid", [ 
      new olwidget.EditableLayer("id_zone_centroid_zone_centroid", {"geometry": "point", "name": "centroid"}) 

     ], 
     {"layers": ["google.hybrid", "google.streets"], "mapOptions": {"controls": ["LayerSwitcher", "Navigation", "PanZoom", "Attribution"]}, "mapDivStyle": {"width": "500px", "height": "400px"}} 
    ); 
</script> 

有没有什么办法让olwidget输出自定义JavaScript附加到地图?

谢谢

回答

0

我想你可能会覆盖呈现OpenLayers地图的模板。您可以在应用程序中创建“templates/olwidget/multi_layer_map.html”来完成此操作。在那里你可能需要做这样的事情(改编自原版):

<div id="{{ id }}"></div> 
{{ layer_html|join:"" }} 
<script type="text/javascript"> 
    var map = new olwidget.Map("{{ id }}", [ 
      {{ layer_js|join:"," }} 
     ], 
     {{ map_opts|safe }} 
    ); // got the ref now :) 

    // do your customization here 
</script> 

我希望这适用于你!

+0

我不得不在项目中重写它,但它似乎工作!谢谢 – tecywiz121