I'm creating a leaflet map for showing agencies on the map, with markers created dynamically for each agency. Also there is list of agencies which when clicked on each one, the map zooms automatically on the specific marker for that agency. Now I intend to show some agency info inside of a popup on every marker, but this popup shows only when clicked upon the agency card or the marker itself. I've been successful in the latter and popups show when clicked on the markers. But I'm having problems when trying to achieve this by clicking on the agency cards. So, in order to clarify the problem, the path I've chosen is as below:
First, my html code for cards:
<div class="card border border-secondary rounded" onclick="moveMap({{ agency.latitude }}, {{ agency.longitude }}, {{ agency.id }})" style="cursor: pointer; z-index: 1000">
... // rest of the html code
Since my backend is on django, so I'm using {{}}
s.
In the moveMap()
function, I'm sending agency.latitude
, agency.longitude
and agency.id
, and my javascript code is as below:
function moveMap(lat, long, id) {
map.flyTo([lat, long], 14, {
animate: true,
duration: 3.5,
});
openPopupByID(id);
}
Here, after moving map to the proper marker, I'm calling openPopupById()
function, which takes id
as it's parameter, and the openPopupById()
function is as below:
function openPopupByID (agency_id) {
for (let item in markerList) {
if (item["id"] === agency_id) {
item.openPopup();
}
}
}
In this function I'm using markerList
which is created as below:
let markerList = [];
// creating markers using the coorList
for (let dataSet of coorList) {
let latNumber = parseFloat(dataSet[0]);
let longNumber = parseFloat(dataSet[1]);
let marker = L.marker(L.latLng(latNumber, longNumber)).addTo(map);
// listing agency info inside popups
marker.bindPopup(setMarkerInfo(dataSet[2]));
//adding each marker to the markerList
marker["id"] = dataSet[2];
markerList.push(marker);
}
coorList
is a list of arrays with three values, agency.latitude
, agency.longitude
and agency.id
with indexes of 0, 1 and 2.
So I have a markerList
which is list of marker objects, and with marker["id"] = dataSet[2];
I've added an id
property to the marker
object.
But in openPopupByID()
function, when I'm trying to access the id
of a marker, I'm getting undefined
message from js console.
When I tried to see the structure of the markerList
using console.log(markerList)
, I get the following:
In which we can clearly see the id
property.
So, what is my problem? What did I do wrong?