106 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.1 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");
 | 
						|
    }
 | 
						|
 | 
						|
    L.tileLayer(SETTINGS.maptileurls[localStorage.getItem("mapsource")], {
 | 
						|
        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);
 | 
						|
 | 
						|
                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;
 | 
						|
} |