-//= require templates/notes/show
-//= require templates/notes/new
-
-$(document).ready(function () {
- var params = OSM.mapParams();
- var newNotes;
-
- function saveNewNotes(o) {
- var layer = o.object;
- newNotes = layer.getFeaturesByAttribute("status", "new")
- layer.removeFeatures(newNotes, { silent: true });
- }
-
- function restoreNewNotes(o) {
- var layer = o.object;
- layer.addFeatures(newNotes);
- newNotes = undefined;
- }
-
- function createNote(feature, form) {
- var location = unproj(feature.geometry.getBounds().getCenterLonLat());
-
- $(form).find("input[type=submit]").prop("disabled", true);
-
- $.ajax($("#createnoteanchor").attr("href"), {
- type: "POST",
- data: {
- lon: location.lon,
- lat: location.lat,
- text: $(form.text).val()
- },
- success: function (data) {
- map.noteSelector.unselect(feature);
-
- feature.attributes = data.properties;
-
- map.noteLayer.drawFeature(feature);
-
- map.noteMover.deactivate();
- }
- });
- }
-
- function updateNote(feature, form, close) {
- var url = close ? feature.attributes.close_url : feature.attributes.comment_url;
-
- $(form).find("input[type=submit]").prop("disabled", true);
-
- $.ajax(url, {
- type: "POST",
- data: {
- text: $(form.text).val()
- },
- success: function (data) {
- map.noteSelector.unselect(feature)
-
- feature.attributes = data.properties;
-
- map.noteSelector.select(feature)
- }
- });
- }
-
- function noteSelected(o) {
- var feature = o.feature;
- var location = feature.geometry.getBounds().getCenterLonLat();
- var content;
- var onClose;
-
- if (feature.attributes.status === "new") {
- content = JST["templates/notes/new"]();
-
- onClose = function (e) {
- feature.attributes.status = "cancelled";
-
- map.noteSelector.unselect(feature);
- map.noteLayer.removeFeatures(feature);
-
- feature.destroy();
-
- map.noteMover.deactivate();
- };
+function initializeNotes(map) {
+ var noteLayer = map.noteLayer,
+ notes = {},
+ newNote;
+
+ var noteIcons = {
+ "new": L.icon({
+ iconUrl: "<%= image_path 'new_note_marker.png' %>",
+ iconSize: [25, 40],
+ iconAnchor: [12, 40]
+ }),
+ "open": L.icon({
+ iconUrl: "<%= image_path 'open_note_marker.png' %>",
+ iconSize: [25, 40],
+ iconAnchor: [12, 40]
+ }),
+ "closed": L.icon({
+ iconUrl: "<%= image_path 'closed_note_marker.png' %>",
+ iconSize: [25, 40],
+ iconAnchor: [12, 40]
+ })
+ };
+
+ map.on("layeradd", function (e) {
+ if (e.layer == noteLayer) {
+ loadNotes();
+ map.on("moveend", loadNotes);
+ }
+ }).on("layerremove", function (e) {
+ if (e.layer == noteLayer) {
+ map.off("moveend", loadNotes);
+ noteLayer.clearLayers();
+ notes = {};
+ }
+ }).on("popupclose", function (e) {
+ if (newNote && e.popup == newNote._popup) {
+ $(newNote).oneTime(10, "removenote", function () {
+ map.removeLayer(newNote);
+ newNote = null;
+ });
+ }
+ })
+
+ noteLayer.on('click', function(e) {
+ OSM.route('/browse/note/' + e.layer.id);
+ })
+
+ function updateMarker(marker, feature) {
+ if (marker) {
+ marker.setIcon(noteIcons[feature.properties.status]);