Fixed individual note marker implementation, closes #78

- Removed forced noteLayer view, now respects current selection just
like an other browse page.
- Made marker replacement it’s own thing, seperate from noteLayer.
- Reduced opacity on noteLayer notes, it makes the selected note stand
out more
This commit is contained in:
Aaron Lidman 2013-11-20 11:43:31 -08:00
parent b5825b2f64
commit 5384ee236c
2 changed files with 14 additions and 15 deletions

View file

@ -2,8 +2,7 @@ OSM.Note = function (map) {
var noteLayer = map.noteLayer, var noteLayer = map.noteLayer,
content = $('#sidebar_content'), content = $('#sidebar_content'),
page = {}, page = {},
noteState = map.hasLayer(noteLayer), halo, currentNote;
halo;
var noteIcons = { var noteIcons = {
"new": L.icon({ "new": L.icon({
@ -23,7 +22,7 @@ OSM.Note = function (map) {
}) })
}; };
function updateNote(marker, form, method, url) { function updateNote(form, method, url) {
$(form).find("input[type=submit]").prop("disabled", true); $(form).find("input[type=submit]").prop("disabled", true);
$.ajax({ $.ajax({
@ -31,13 +30,7 @@ OSM.Note = function (map) {
type: method, type: method,
oauth: true, oauth: true,
data: {text: $(form.text).val()}, data: {text: $(form.text).val()},
success: function (feature) { success: function () {
marker = noteLayer.getLayer(marker);
if (feature.properties.status == "hidden") {
noteLayer.removeLayer(marker);
} else if (marker) {
marker.setIcon(noteIcons[feature.properties.status]);
}
OSM.loadSidebarContent(window.location.pathname, page.load); OSM.loadSidebarContent(window.location.pathname, page.load);
} }
}); });
@ -51,7 +44,7 @@ OSM.Note = function (map) {
content.find("input[type=submit]").on("click", function (e) { content.find("input[type=submit]").on("click", function (e) {
e.preventDefault(); e.preventDefault();
var data = $(e.target).data(); var data = $(e.target).data();
updateNote(data.noteId, e.target.form, data.method, data.url); updateNote(e.target.form, data.method, data.url);
}); });
content.find("textarea").on("input", function (e) { content.find("textarea").on("input", function (e) {
@ -69,12 +62,10 @@ OSM.Note = function (map) {
content.find("textarea").val('').trigger("input"); content.find("textarea").val('').trigger("input");
var data = $('.details').data(); var data = $('.details').data();
if (!noteState) map.addLayer(noteLayer);
if (!window.location.hash) { if (!window.location.hash) {
var coords = data.coordinates.split(','); var coords = data.coordinates.split(',');
OSM.route.moveListenerOff(); OSM.route.moveListenerOff();
map.once('moveend', OSM.route.moveListenerOn); map.once('moveend', OSM.route.moveListenerOn);
map.getZoom() > 15 ? map.panTo(coords) : map.setView(coords, 16); map.getZoom() > 15 ? map.panTo(coords) : map.setView(coords, 16);
} }
@ -87,11 +78,19 @@ OSM.Note = function (map) {
}); });
map.addLayer(halo); map.addLayer(halo);
} }
if (map.hasLayer(currentNote)) map.removeLayer(currentNote);
currentNote = L.marker(data.coordinates.split(','), {
icon: noteIcons[data.status],
opacity: 1,
clickable: true
});
map.addLayer(currentNote);
}; };
page.unload = function () { page.unload = function () {
if (map.hasLayer(halo)) map.removeLayer(halo); if (map.hasLayer(halo)) map.removeLayer(halo);
if (!noteState) map.removeLayer(noteLayer); if (map.hasLayer(currentNote)) map.removeLayer(currentNote);
}; };
return page; return page;

View file

@ -43,7 +43,7 @@ function initializeNotes(map) {
} else { } else {
marker = L.marker(feature.geometry.coordinates.reverse(), { marker = L.marker(feature.geometry.coordinates.reverse(), {
icon: noteIcons[feature.properties.status], icon: noteIcons[feature.properties.status],
opacity: 0.9, opacity: 0.8,
clickable: true clickable: true
}); });
marker.id = feature.properties.id; marker.id = feature.properties.id;