/* * 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/. */ var leafletnearbylayer = L.geoJson( { name: "Nearby Merchants", type: "FeatureCollection", features: [ { type: "Feature", geometry: { type: "Point", coordinates: [0, 0] }, properties: { id: "", name: "", address: "", types: {} } } ] }, { onEachFeature: function (feature, layer) { if (feature.properties && feature.properties.popupContent) { layer.bindPopup(feature.properties.popupContent); } }, pointToLayer: function (feature, latlng) { var icon = "fas fa-store"; if (feature.properties.types.length > 0) { icon = feature.properties.types[0].icon; } var marker = L.marker(latlng, { icon: (new L.divIcon({ html: '', iconSize: [20, 20], className: 'fa-map-icon' })) }); return marker; } } ); function updateMap() { var diagonalMeters = leafletmap.getBounds().getNorthWest().distanceTo(leafletmap.getBounds().getSouthEast()); var radius = (diagonalMeters / 2.0) / 1609.344; callAPIRawResponse("getmerchants", { key: localStorage.getItem("key"), latitude: leafletmap.getCenter().lat, longitude: leafletmap.getCenter().lng, radius: radius, format: "geojson" }, function (data) { if (data.type == "FeatureCollection") { leafletnearbylayer.clearLayers(); data.features.forEach(function (item) { var icons = ""; item.properties.types.forEach(function (type) { icons += " " + type.name + "
"; }); item.properties.popupContent = (item.properties.name.length > 50 ? item.properties.name.substring(0, 50) + "..." : item.properties.name) + "

" + icons; leafletnearbylayer.addData(item); }); leafletmap.addLayer(leafletnearbylayer); $(".leaflet-marker-icon").addClass("card-prevent-open"); } }); }