Рисование радиуса на olwidget в django

Я использую olwidget внутри django для рисования карт. В одной из моих форм я запрашиваю у пользователя местоположение и радиус. Местоположение вводится с помощью карты OpenLayers, предоставленной olwidget, а радиус — это ползунок из jquery-ui.

Что я хотел бы сделать, так это нарисовать круг радиуса на карте, который обновляется, когда пользователь манипулирует ползунком.

Я не могу получить ссылку на карту OpenLayers, которую создает olwidget. Исходный код, который генерирует 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, прикрепленный к карте?

Спасибо


person tecywiz121    schedule 21.08.2011    source источник


Ответы (1)


Я думаю, вы могли бы переопределить шаблон, отображающий карту 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>

Я надеюсь, что это работает для вас!

person Juho Vepsäläinen    schedule 21.08.2011
comment
Мне пришлось переопределить это в проекте, но, похоже, это работает! Спасибо - person tecywiz121; 21.08.2011