/*/===!===!===!===!===!===!===!===!===!===!===!===!===!===!===!===!/*/
/*-| Variables |-*/
/*/===!===!===!===!===!===!===!===!===!===!===!===!===!===!===!/*/
let defIcon
//This sets up our colored pins
var greenIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/green-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 6, 12 ],
popupAnchor: [ 1, -12 ]
} );
var greenIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/green-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var greenIcon = new L.Icon( {
iconUrl: 'Images/Pins/green-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ]
} );
var blueIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/blue-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var blueIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/blue-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var blueIcon = new L.Icon( {
iconUrl: 'Images/Pins/blue-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ]
} );
var grayIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/gray.png-marker',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var grayIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/gray-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var grayIcon = new L.Icon( {
iconUrl: 'Images/Pins/gray-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ]
} );
var redIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/red-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var redIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/red-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var redIcon = new L.Icon( {
iconUrl: 'Images/Pins/red-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ]
} );
var yellowIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/yellow-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var yellowIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/yellow-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var yellowIcon = new L.Icon( {
iconUrl: 'Images/Pins/yellow-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ]
} );
var platinumIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/platinum-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var platinumIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/platinum-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var platinumIcon = new L.Icon( {
iconUrl: 'Images/Pins/platinum-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ]
} );
var goldIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/gold-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var goldIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/gold-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var goldIcon = new L.Icon( {
iconUrl: 'Images/Pins/gold-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ]
} );
var silverIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/silver-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var silverIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/silver-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var silverIcon = new L.Icon( {
iconUrl: 'Images/Pins/silver-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ]
} );
var bronzeIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/bronze-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var bronzeIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/bronze-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var bronzeIcon = new L.Icon( {
iconUrl: 'Images/Pins/bronze-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ]
} );
var blackIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/black-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var blackIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/black-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var blackIcon = new L.Icon( {
iconUrl: 'Images/Pins/black-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ],
shadowSize: [ 59, 32 ]
} );
var diamondIconSmall = new L.Icon( {
iconUrl: 'Images/Pins/diamond-marker.png',
iconSize: [ 12, 12 ],
iconAnchor: [ 8, 12 ],
popupAnchor: [ 1, -12 ]
} );
var diamondIconMedium = new L.Icon( {
iconUrl: 'Images/Pins/diamond-marker.png',
iconSize: [ 20, 20 ],
iconAnchor: [ 10, 20 ],
popupAnchor: [ 1, -20 ]
} );
var diamondIcon = new L.Icon( {
iconUrl: 'Images/Pins/diamond-marker.png',
iconSize: [ 32, 32 ],
iconAnchor: [ 16, 32 ],
popupAnchor: [ 1, -32 ],
shadowSize: [ 59, 32 ]
} );
window.L.CanvasIconLayer = layerFactory( L );
//This will let us use a map image that we have converted via Export>Zoomify in Photoshop
var expoMap = L.map( 'expoMap', {
maxZoom: 5, //Does not matter anymore, maxNativeZoom prevents loading of missing zoom levels
minZoom: 2,
crs: L.CRS.Simple, //Set a flat projection, as we are projecting an image
preferCanvas: true //Use canvas (to help with rendering large amount of markers)
} );
//Loading the Zoomify tile layer, notice the URL
var expoLayer = L.tileLayer.zoomify( 'https://leift.org/SuppliersDay2025/Images/Map/{g}/{z}-{x}-{y}.jpg', {
width: 3500,
height: 3500,
attribution: '© IAMI'
} ).addTo( expoMap );
//Setting the view to our layer bounds, set by our Zoomify plugin
//expoMap.fitBounds(expoLayer.options.bounds);
expoMap.setView( { lat:-64.919792175293, lng:157.43179587693} ); // This will set the map to where the full map shows. Change lat/lng as needed getting the values from the edit map admin area.
var ciLayer = L.canvasIconLayer( {} ).addTo( expoMap );
ciLayer.addOnClickListener( onBoothClick );
function onBoothClick( e, r ) {
showBoothPopup( r[0].data.boothInfo.booth )
}
//get list of our booths
var booths = [];
var markerArray = []; //This will store all our markers
loadBoothList();
//This will update icon size based on zoom level.
expoMap.on( 'zoomend', function () {
removeMarkers();
addMarkers( booths );
//Now let's redraw our canvas markers
} );
function removeMarkers() {
for ( index = 0; index < markerArray.length; ++index ) {
ciLayer.removeMarker( markerArray[index] );
}
markerArray = [];
}
function loadBoothList( loadType, onlyRegistered, IndustryType, Industries ) {
removeMarkers();
if ( loadType == null ) loadType = "All";
if ( onlyRegistered == null ) onlyRegistered = "0";
if ( IndustryType == null ) IndustryType = "Any";
if ( Industries == null ) Industries = "";
expo_post( "loadBoothList.php", {
loadType: loadType,
onlyRegistered: onlyRegistered,
IndustryType: IndustryType,
Industries: Industries
}, "#expoList" ).done( function ( expodata ) {
booths = JSON.parse( expodata );
addMarkers( booths );
expo_post( "loadSortedBooths.php", {
loadType: loadType,
IndustryType: IndustryType,
Industries: Industries
}, "none" ).done( function ( expodata ) {
jQuery( "#expoList" ).html( expodata );
} );
} );
}
function addMarkers( booths ) {
for ( var i = 0; i < booths.length; i++ ) {
if ( expoMap.getZoom() >= 3 ) {
switch ( booths[i].status ) {
case "9":
defIcon = diamondIcon;
break;
case "8":
defIcon = platinumIcon;
break;
case "7":
defIcon = goldIcon;
break;
case "6":
defIcon = silverIcon;
break;
case "5":
defIcon = bronzeIcon;
break;
case "4":
defIcon = redIcon;
break;
case "3":
defIcon = blackIcon;
break;
case "2":
defIcon = blackIcon;
break;
case "1":
defIcon = blueIcon;
break;
case "0":
defIcon = greenIcon;
break;
}
} else if ( expoMap.getZoom() === 2 ) {
switch ( booths[i].status ) {
case "9":
defIcon = diamondIconMedium;
break;
case "8":
defIcon = platinumIconMedium;
break;
case "7":
defIcon = goldIconMedium;
break;
case "6":
defIcon = silverIconMedium;
break;
case "5":
defIcon = bronzeIconMedium;
break;
case "4":
defIcon = redIconMedium;
break;
case "3":
defIcon = blackIconMedium;
break;
case "2":
defIcon = blackIconMedium;
break;
case "1":
defIcon = blueIconMedium;
break;
case "0":
defIcon = greenIconMedium;
break;
}
} else {
switch ( booths[i].status ) {
case "9":
defIcon = diamondIconSmall;
break;
case "8":
defIcon = platinumIconSmall;
break;
case "7":
defIcon = goldIconSmall;
break;
case "6":
defIcon = silverIconSmall;
break;
case "5":
defIcon = bronzeIconSmall;
break;
case "4":
defIcon = redIconSmall;
break;
case "3":
defIcon = blackIconSmall;
break;
case "2":
defIcon = blackIconSmall;
break;
case "1":
defIcon = blueIconSmall;
break;
case "0":
defIcon = greenIconSmall;
break;
}
}
marker = new L.marker( [ booths[i].lat, booths[i].lng ], { icon: defIcon, boothInfo: booths[i] } )
.bindTooltip( "Booth " + booths[i].booth + ": " + booths[i].company );
marker.boothInfo = booths[i];
marker.bindPopup( "Loading" );
marker.on( 'click', function ( e ) {
var marker = e.target;
var popup = e.target.getPopup();
popup.setContent( showLoading );
popup.update();
/*expo_post("loadBoothInfo.php", {boothNumber: marker.boothInfo.booth}, "none").done(function(expodata) {
popup.setContent(expodata);
popup.update();
});*/
} );
markerArray.push( marker );
}
ciLayer.addMarkers( markerArray );
ciLayer.redraw();
}
function showBoothPopup( booth, infoID ) {
for ( let index = 0; index < markerArray.length; ++index ) {
if ( markerArray[index].boothInfo.booth === booth ) {
if ( infoID == null ) infoID = "";
var marker = markerArray[index];
var popup = marker.getPopup();
marker.openPopup();
popup.setContent( showLoading );
popup.update();
expo_post( "loadBoothInfo.php", {
boothNumber: booth,
infoID: infoID
}, "none" ).done( function ( expodata ) {
popup.setContent( expodata );
popup.update();
} );
//Now zoom/pan to marker/popup
var latLngs = [ popup.getLatLng() ];
var markerBounds = L.latLng( latLngs );
try {
expoMap.setView( L.latLng( latLngs ) );
} catch ( e ) {
}
break;
}
}
}