lostplaces-backend/django_lostplaces/lostplaces/templates/partials/osm_map.html

69 lines
2.7 KiB
HTML
Raw Permalink Normal View History

2020-09-29 20:21:27 +02:00
{% load static %}
<div tabindex="1" id="map" class="LP-Map map" style="height: 300px"></div>
<div id="info" class="map-popup LP-Map__Popup"></div>
2020-08-21 20:38:52 +02:00
<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|safe}}, {{config.map_center.latitude|safe}}]),
zoom: 9
})
});
var vectorSource = new ol.source.Vector({
features: [
2020-09-13 20:15:49 +02:00
{% for point in config.all_points %}
new ol.Feature({
geometry: new ol.geom.Point(
ol.proj.fromLonLat([{{point.longitude|safe}},{{point.latitude|safe}}])
),
2020-09-12 11:42:18 +02:00
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',
2020-09-29 20:40:41 +02:00
scale: 0.02,
2020-09-29 20:21:27 +02:00
src: '{% static "icons/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>