I'm new in Leaflet.
I'm using Leaflet as my base map. I have a lot of points as a KML file. I used GeoJSON & omnivore.kml(…) to load my KML file. Every thing is ok and it loads perfectly.
My Script to load KML file is:
var map = L.cedarmaps.map('map', tileJSONUrl, {
scrollWheelZoom: true,
zoomControl: false,
minZoom: 7,
maxZoom: 17,
contextmenu: true,
contextmenuWidth: 230,
locateControl: true,
contextmenuItems: [
{
text: 'KML Loaded Map',
callback: function(latlngObj, layerPoint, containerPoint) {
alert('You have clicked on: '+ latlngObj.latlng);
}.bind(this)
}
]
}).setView([39.944893, 32.857753], 7);
trackfilename_old="http://mydomain.com/attach_files/kml/my_test.kml";
var oldIcon = L.icon({
iconUrl: 'http://mydomain.com/icn/location_blue_icon.png',
iconSize: [30, 48],
iconAnchor: [12, 55],
popupAnchor: [-3, -76]
});
var customLayerOld = L.geoJson(null, {
pointToLayer: function (feature, latlng) {
return L.marker(latlng, {icon: oldIcon});
}
});
var runLayerOld = omnivore.kml(trackfilename_old, null, customLayerOld)
.on('ready', function() {
map.fitBounds(runLayerOld.getBounds());
if (layer instanceof L.Marker) {
layer.setIcon(oldIcon);
}
})
.addTo(map);
Now, I want to show a popup when user clicks on each data point and read some info (Lat, Long, Alt, Name) from KML file and show to user.
I use KML file add below:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<name>ANK.kml</name>
<Style id="s_ylw-pushpin">
<IconStyle>
<scale>1.1</scale>
<Icon>
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
</Icon>
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<StyleMap id="m_ylw-pushpin">
<Pair>
<key>normal</key>
<styleUrl>#s_ylw-pushpin</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#s_ylw-pushpin_hl</styleUrl>
</Pair>
</StyleMap>
<Style id="s_ylw-pushpin_hl">
<IconStyle>
<scale>1.3</scale>
<Icon>
<href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
</Icon>
<hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
</IconStyle>
</Style>
<Folder>
<name>ANK</name>
<open>1</open>
<Placemark>
<name>Ank_1</name>
<LookAt>
<longitude>32.86942647853363</longitude>
<latitude>39.92630256734498</latitude>
<altitude>0</altitude>
<heading>-4.479240497639318</heading>
<tilt>4.232329499114298</tilt>
<range>11792.58028663931</range>
<gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
</LookAt>
<styleUrl>#m_ylw-pushpin</styleUrl>
<Point>
<gx:drawOrder>1</gx:drawOrder>
<coordinates>32.86798741024662,39.94797667773256,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Ank_2</name>
<LookAt>
<longitude>32.8694203274871</longitude>
<latitude>39.92636237233789</latitude>
<altitude>0</altitude>
<heading>-4.479244877828945</heading>
<tilt>4.232389489836512</tilt>
<range>11883.01875115117</range>
<gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
</LookAt>
<styleUrl>#m_ylw-pushpin</styleUrl>
<Point>
<gx:drawOrder>1</gx:drawOrder>
<coordinates>32.87469557980627,39.93699423873866,0</coordinates>
</Point>
</Placemark>
<Placemark>
<name>Ank_3</name>
<LookAt>
<longitude>32.8694203274871</longitude>
<latitude>39.92636237233789</latitude>
<altitude>0</altitude>
<heading>-4.479244877828945</heading>
<tilt>4.232389489836512</tilt>
<range>11883.01875115117</range>
<gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
</LookAt>
<styleUrl>#m_ylw-pushpin</styleUrl>
<Point>
<gx:drawOrder>1</gx:drawOrder>
<coordinates>32.86337727731056,39.93707957846002,0</coordinates>
</Point>
</Placemark>
</Folder>
</Document>
</kml>
How can I solve the issue?
Best Answer
Just bind popup to marker in
pointToLayer
method ofcustomLayerOld
layer: