69 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
 | 
						|
<div id="map" class="map" style="height: 300px"></div>
 | 
						|
    <div id="info" class="map-popup"></div>
 | 
						|
 | 
						|
        <script type="text/javascript">
 | 
						|
            var map = new ol.Map({
 | 
						|
            target: 'map',
 | 
						|
            layers: [
 | 
						|
                new ol.layer.Tile({
 | 
						|
                source: new ol.source.OSM()
 | 
						|
                }),
 | 
						|
            ],
 | 
						|
            view: new ol.View({
 | 
						|
                center: ol.proj.fromLonLat([{{config.map_center.longitude}}, {{config.map_center.latitude}}]),
 | 
						|
                zoom: 9
 | 
						|
            })
 | 
						|
            });
 | 
						|
 | 
						|
            var vectorSource = new ol.source.Vector({
 | 
						|
                features: [
 | 
						|
                    {% for point in config.point_list %}
 | 
						|
                        new ol.Feature({
 | 
						|
                            geometry: new ol.geom.Point(
 | 
						|
                                ol.proj.fromLonLat([{{point.longitude}},{{point.latitude}}])
 | 
						|
                            ),
 | 
						|
                            url: '{{point.get_absolute_url}}',
 | 
						|
                            name: '  {{point.name}}'
 | 
						|
                        }),
 | 
						|
                    {% endfor %}
 | 
						|
                ]
 | 
						|
            });
 | 
						|
 | 
						|
            var markerVectorLayer = new ol.layer.Vector({
 | 
						|
                source: vectorSource,
 | 
						|
                style: new ol.style.Style({
 | 
						|
                        image: new ol.style.Icon({
 | 
						|
                            anchor: [0.5, 46],
 | 
						|
                            anchorXUnits: 'fraction',
 | 
						|
                            anchorYUnits: 'pixels',
 | 
						|
                            scale: 0.3,
 | 
						|
                            src: 'http://icons.iconarchive.com/icons/paomedia/small-n-flat/128/map-marker-icon.png'
 | 
						|
                        })
 | 
						|
                })
 | 
						|
            });
 | 
						|
            map.addLayer(markerVectorLayer);
 | 
						|
 | 
						|
            var overlay = new ol.Overlay({
 | 
						|
                element: document.getElementById('info'),
 | 
						|
                positioning: 'bottom-left'
 | 
						|
            });
 | 
						|
            overlay.setMap(map);
 | 
						|
 | 
						|
            map.on(['singleclick'], function(evt) {
 | 
						|
                var feature = map.forEachFeatureAtPixel(evt.pixel, function(feature) {
 | 
						|
                    window.open(feature.get('url'), '_blank');
 | 
						|
                });
 | 
						|
            });
 | 
						|
 | 
						|
            map.on(['pointermove'], function(evt) {
 | 
						|
                var feature = map.forEachFeatureAtPixel(evt.pixel, function(feature) {
 | 
						|
                    overlay.setPosition(evt.coordinate.map(element => element + 1));
 | 
						|
                    overlay.getElement().innerHTML = feature.get('name');
 | 
						|
                    return feature;
 | 
						|
                });
 | 
						|
                overlay.getElement().style.display = feature ? '' : 'none';
 | 
						|
                document.body.style.cursor = feature ? 'pointer' : '';
 | 
						|
            });
 | 
						|
 | 
						|
        </script> |