forked from Netsyms/PackageHelper
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.
109 lines
3.2 KiB
JavaScript
109 lines
3.2 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 leafletMap() {
|
|
var map = L.map('mapbox', {
|
|
zoomSnap: 0.25,
|
|
minZoom: 1,
|
|
maxZoom: 19,
|
|
zoom: 12,
|
|
center: L.latLng(46.5966, -112.0180),
|
|
attributionControl: false
|
|
});
|
|
|
|
if (localStorage.getItem("mapsource") == null) {
|
|
localStorage.setItem("mapsource", "liberty");
|
|
}
|
|
|
|
$("#mapbox").css("background-color", SETTINGS.maptileurls[localStorage.getItem("mapsource")].bgcolor);
|
|
|
|
L.tileLayer(SETTINGS.maptileurls[localStorage.getItem("mapsource")].url, {
|
|
minZoom: 1,
|
|
maxZoom: 19
|
|
}).addTo(map);
|
|
|
|
map.locateControl = L.control.locate({
|
|
flyTo: false, // Hopefully this will lower the number of map tile requests when location is found
|
|
showPopup: false,
|
|
locateOptions: {
|
|
enableHighAccuracy: true,
|
|
maxZoom: 16
|
|
},
|
|
setView: "untilPanOrZoom",
|
|
icon: "far fa-compass",
|
|
iconLoading: "far fa-compass fa-spin"
|
|
}).addTo(map);
|
|
|
|
map.packagelayer = L.markerClusterGroup();
|
|
|
|
map.packagelayer.addTo(map);
|
|
|
|
map.setView({lat: userPosition.coords.latitude, lng: userPosition.coords.longitude}, 2);
|
|
|
|
map.setMapHeading = function (heading) {
|
|
|
|
}
|
|
|
|
map.setMapLocation = function (latitude, longitude) {
|
|
map.setView({
|
|
lng: longitude,
|
|
lat: latitude
|
|
});
|
|
}
|
|
|
|
map.updatePackageLayer = function (data) {
|
|
map.packagelayer.clearLayers();
|
|
|
|
console.log(data);
|
|
|
|
for (var i = 0; i < data.length; i++) {
|
|
// JavaScript variable scope and anonymous functions are dumb
|
|
// This is necessary, otherwise all the on(click)s will fire for the last iteration
|
|
// of the loop, or something like that
|
|
(function (datai) {
|
|
var iconName = getMapIconForItems(datai.items);
|
|
console.log(iconName);
|
|
|
|
var icon = L.icon({
|
|
iconUrl: "assets/images/" + iconName + ".png",
|
|
iconSize: [25, 25],
|
|
iconAnchor: [12.5, 12.5]
|
|
});
|
|
|
|
var marker = L.marker(
|
|
[
|
|
datai.coords[0],
|
|
datai.coords[1]
|
|
],
|
|
{
|
|
icon: icon
|
|
})
|
|
.on("click", function () {
|
|
openPackageInfoSheet(datai.id)
|
|
});
|
|
|
|
map.packagelayer.addLayer(marker);
|
|
})(data[i]);
|
|
}
|
|
}
|
|
|
|
map.animateMapIn = function (latitude, longitude, zoom, heading) {
|
|
if (typeof zoom == 'undefined') {
|
|
zoom = 14;
|
|
}
|
|
if (typeof heading == 'undefined') {
|
|
heading = 0;
|
|
}
|
|
map.flyTo([latitude, longitude], zoom);
|
|
// Set min zoom after some time to fly in
|
|
setTimeout(function () {
|
|
map.setMinZoom(12);
|
|
map.setZoom(zoom);
|
|
}, 1000);
|
|
}
|
|
|
|
return map;
|
|
} |