You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.0 KiB
JavaScript
116 lines
3.0 KiB
JavaScript
/*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
function maplibreMap(containerEl, interactive) {
|
|
|
|
var theme = "liberty";
|
|
if ($("body").hasClass("dark")) {
|
|
theme = "libertydark";
|
|
}
|
|
|
|
$(containerEl).css("background-color", SETTINGS.maptileurls[theme].bgcolor);
|
|
|
|
var map = new maplibregl.Map({
|
|
container: containerEl.id,
|
|
style: SETTINGS.maptileurls[theme].json,
|
|
//attributionControl: false,
|
|
interactive: interactive,
|
|
pitch: 0,
|
|
zoom: 1,
|
|
maxZoom: 18,
|
|
center: [-97, 38]
|
|
});
|
|
|
|
if (interactive) {
|
|
map.addControl(new maplibregl.NavigationControl({
|
|
visualizePitch: false,
|
|
showCompass: false
|
|
}), 'top-left');
|
|
|
|
map.geolocatecontrol = new maplibregl.GeolocateControl({
|
|
positionOptions: {
|
|
enableHighAccuracy: true
|
|
},
|
|
fitBoundsOptions: {
|
|
maxZoom: 13
|
|
},
|
|
showAccuracyCircle: false,
|
|
trackUserLocation: true
|
|
});
|
|
|
|
map.addControl(map.geolocatecontrol, 'top-left');
|
|
|
|
map.geolocatecontrol.on('error', function (err) {
|
|
console.error("Geolocate error", err);
|
|
});
|
|
|
|
map.addControl(
|
|
new maplibregl.ScaleControl({
|
|
unit: "imperial"
|
|
})
|
|
);
|
|
}
|
|
|
|
map.mapEasing = function (t) {
|
|
return t * (2 - t);
|
|
};
|
|
|
|
map.setMapHeading = function (heading) {
|
|
if (typeof heading == 'number') {
|
|
map.easeTo({
|
|
bearing: heading,
|
|
easing: map.mapEasing
|
|
});
|
|
}
|
|
};
|
|
|
|
map.setMapLocation = function (latitude, longitude) {
|
|
map.easeTo({
|
|
center: [
|
|
longitude,
|
|
latitude
|
|
]
|
|
});
|
|
};
|
|
|
|
map.animateMapIn = function (latitude, longitude, zoom, heading) {
|
|
if (typeof zoom == 'undefined') {
|
|
zoom = 10;
|
|
}
|
|
if (typeof heading == 'undefined') {
|
|
heading = 0;
|
|
}
|
|
map.flyTo({
|
|
center: [
|
|
longitude,
|
|
latitude
|
|
],
|
|
speed: 1,
|
|
zoom: zoom,
|
|
heading: heading,
|
|
pitch: 0
|
|
});
|
|
};
|
|
|
|
map.addMarker = function (latitude, longitude, classname) {
|
|
var el = document.createElement("div");
|
|
|
|
el.className = classname;
|
|
new maplibregl.Marker(el).setLngLat([longitude, latitude]).addTo(map);
|
|
};
|
|
|
|
map.removeMarkers = function () {
|
|
var oldmarkers = document.getElementsByClassName("map-marker");
|
|
if (oldmarkers.length > 0) {
|
|
markerparent = oldmarkers[0].parentNode;
|
|
while (oldmarkers.length > 0) {
|
|
markerparent.removeChild(oldmarkers[0]);
|
|
}
|
|
}
|
|
}
|
|
|
|
return map;
|
|
} |