1 OSM.initializeNotesLayer = function (map) {
2 var noteLayer = map.noteLayer,
7 iconUrl: OSM.NEW_NOTE_MARKER,
12 iconUrl: OSM.OPEN_NOTE_MARKER,
17 iconUrl: OSM.CLOSED_NOTE_MARKER,
23 map.on("layeradd", function (e) {
24 if (e.layer === noteLayer) {
26 map.on("moveend", loadNotes);
28 }).on("layerremove", function (e) {
29 if (e.layer === noteLayer) {
30 map.off("moveend", loadNotes);
31 noteLayer.clearLayers();
36 noteLayer.on("click", function (e) {
38 OSM.router.route("/note/" + e.layer.id);
42 function updateMarker(old_marker, feature) {
43 var marker = old_marker;
45 marker.setIcon(noteIcons[feature.properties.status]);
47 marker = L.marker(feature.geometry.coordinates.reverse(), {
48 icon: noteIcons[feature.properties.status],
49 title: feature.properties.comments[0].text,
53 marker.id = feature.properties.id;
54 marker.addTo(noteLayer);
59 noteLayer.getLayerId = function (marker) {
65 function loadNotes() {
66 var bounds = map.getBounds();
67 var size = bounds.getSize();
69 if (size <= OSM.MAX_NOTE_REQUEST_AREA) {
70 var url = "/api/" + OSM.API_VERSION + "/notes.json?bbox=" + bounds.toBBoxString();
72 if (noteLoader) noteLoader.abort();
80 function success(json) {
83 json.features.forEach(updateMarkers);
85 function updateMarkers(feature) {
86 var marker = oldNotes[feature.properties.id];
87 delete oldNotes[feature.properties.id];
88 notes[feature.properties.id] = updateMarker(marker, feature);
91 for (var id in oldNotes) {
92 noteLayer.removeLayer(oldNotes[id]);