1 //= require maplibre.map
6 function updateFormFieldsFromMarkerPosition() {
7 const lngLat = marker.getLngLat();
8 $("#latitude").val(lngLat.lat);
9 $("#longitude").val(lngLat.lng);
12 function setLocation(e) {
13 const coords = e.lngLat.wrap();
15 marker.setLngLat(coords);
17 marker = OSM.MapLibre.getMarker({ draggable: true })
19 .setPopup(OSM.MapLibre.getPopup(OSM.i18n.t("diary_entries.edit.marker_text")))
21 marker.on("dragend", updateFormFieldsFromMarkerPosition);
23 updateFormFieldsFromMarkerPosition();
26 $("#usemap").click(function (e) {
32 const params = $("#map").data();
33 map = new maplibregl.Map({
34 ...OSM.MapLibre.defaultSecondaryMapOptions,
35 center: [params.lon, params.lat],
39 const position = $("html").attr("dir") === "rtl" ? "top-left" : "top-right";
40 const navigationControl = new maplibregl.NavigationControl({ showCompass: false });
41 map.addControl(navigationControl, position);
42 map.touchZoomRotate.disableRotation();
43 map.keyboard.disableRotation();
45 // Create marker if coordinates exist when map is shown
46 if ($("#latitude").val() && $("#longitude").val()) {
47 const lngLat = new maplibregl.LngLat($("#longitude").val(), $("#latitude").val());
48 setLocation({ lngLat });
49 map.setCenter(lngLat);
52 map.on("click", setLocation);