summaryrefslogtreecommitdiff
path: root/ishtar_common/templates/gis/openlayers-osm.html
blob: 59969210adb9b3fd3b6459c00b926c65c486f21d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{% extends "gis/openlayers.html" %}
{% load l10n %}

{% block base_layer %}
        var base_layer;{% endblock %}

{% block options %}{{ block.super }}
        options['default_lon'] = {{ default_lon|unlocalize }};
        options['default_lat'] = {{ default_lat|unlocalize }};
        options['default_zoom'] = {{ default_zoom|unlocalize }};
        var map_layers_edit = [
            new ol.layer.Group({
                title: base_maps_msg,
                visible: true,
                layers: get_layers()
            })
        ];
        options["layers"] = map_layers_edit;
        delete options.base_layer;
        var map_controls = ol.control.defaults().extend([
            new ol.control.FullScreen(),
            new ol.control.ScaleLine()
        ]);
        if (location.protocol == 'https:'){
            map_controls.push(
                new TrackPositionControl({map_id: options['map_id']})
            );
        }
        options["controls"] = map_controls;
{% endblock %}

{% block post_module %}
        var layer_switcher = new ol.control.LayerSwitcher({
            tipLabel: 'Légende',
            groupSelectStyle: 'children'
        });
        {{ module }}.map.addControl(layer_switcher);
        {% comment %}$(".ol-viewport").parent().width($(".form").width());{% endcomment %}
        let ol_viewport = document.querySelector(".ol-viewport");
        if (ol_viewport.parent) ol_viewport.parent().width(document.querySelector(".form").width());
        {% comment %}$(document).ready(function() { {% endcomment %}
        document.addEventListener("DOMContentLoaded", function() {
            {{ module }}.map.updateSize();
            let features = {{ module }}.featureOverlay.getSource().getFeatures();
            if (features.length){
                let layer_extent = features[0].getGeometry().getExtent().slice(0);
                features.forEach(function(feature){ ol.extent.extend(layer_extent, feature.getGeometry().getExtent())});
                {{ module }}.map.getView().fit(layer_extent, {{ module }}.map.getSize());
            }
            let current_zoom = {{ module }}.map.getView().getZoom();
            if ({{ module }}.map.getView().getZoom() > 18) {{ module }}.map.getView().setZoom(18);
            current_module = {{ module }} ;
        });
{% endblock %}