I'm using Leafletjs library to create a visual sales module for my application. I can add marker with OnMapClick event but not with data coming from service.
function onMapClick(e) {
var newPosition = e.latlng;
var field = GetFieldInfo();
if (field) {
if (bounds.contains(newPosition)) {
AddMarkerToMap(e.latlng.lat, e.latlng.lng, field);
}
}
}
Adding markers on map in AddMarkerToMap function.
function AddMarkerToMap(_lat, _lng, field) {
var lat = JSON.parse(_lat);
var lng = JSON.parse(_lng);
var geojsonFeature = {
"type": "Feature",
"properties": {},
"geometry": {
"type": "Point",
"coordinates": [lat, lng]
}
}
var newMarker;
L.geoJson(geojsonFeature, {
pointToLayer: function (feature, latlng) {
newMarker = CreateMarker(lat, lng, field);
return newMarker;
}
}).addTo(map);
var lastValidPosition;
newMarker.on("drag", function (event) {
var latLng = newMarker.getLatLng();
if (bounds.contains(latLng)) {
lastValidPosition = latLng;
} else {
if (lastValidPosition) {
newMarker.setLatLng(lastValidPosition);
}
}
}, newMarker);
var popupContent = CreatePopupContent(field);
newMarker.bindPopup(popupContent);
newMarker.on("popupopen", onPopupOpen);
}
function CreateMarker(lat, lng, field) {
var position = [lat, lng];
var newMarker;
newMarker = new customFieldMarker(position, {
icon: L.icon({
iconUrl: 'Sources/css/images/Outside-Chartreuse.png',
iconSize: [48, 48], // size of the icon
iconAnchor: [24, 48], // point of the icon which will correspond to marker's location
popupAnchor: [0, -48],
}),
draggable: "true",
options: {
field: field
}
});
return newMarker;
}
In my code field is a JSON object coming from OData service and it contains lat,lng informations of markers that saved previously. Why markers added dynamically not shown on map ?
pointToLayercallback function, it gives feature and geometry, you should reference from there. - Downhillski