-OSM.NewNote = function(map) {
+//= require qs/dist/qs
+
+OSM.NewNote = function (map) {
var noteLayer = map.noteLayer,
- content = $('#sidebar_content'),
- page = {},
- addNoteButton = $(".control-note .control-button"),
- newNote,
- halo;
+ content = $("#sidebar_content"),
+ page = {},
+ addNoteButton = $(".control-note .control-button"),
+ newNote,
+ halo;
var noteIcons = {
"new": L.icon({
e.preventDefault();
e.stopPropagation();
- if ($(this).hasClass('disabled')) return;
+ if ($(this).hasClass("disabled")) return;
- OSM.router.route('/note/new');
+ OSM.router.route("/note/new");
});
function createNote(marker, form, url) {
newNote = null;
noteLayer.removeLayer(marker);
addNoteButton.removeClass("active");
- OSM.router.route('/note/' + feature.properties.id);
+ OSM.router.route("/note/" + feature.properties.id);
}
}
var marker = L.marker(feature.geometry.coordinates.reverse(), {
icon: noteIcons[feature.properties.status],
opacity: 0.9,
- clickable: true
+ interactive: true
});
marker.id = feature.properties.id;
marker.addTo(noteLayer);
};
function newHalo(loc, a) {
- if (a === 'dragstart' && map.hasLayer(halo)) {
+ if (a === "dragstart" && map.hasLayer(halo)) {
map.removeLayer(halo);
} else {
if (map.hasLayer(halo)) map.removeLayer(halo);
map.addLayer(noteLayer);
- var params = querystring.parse(path.substring(path.indexOf('?') + 1));
+ var params = Qs.parse(path.substring(path.indexOf("?") + 1));
var markerLatlng;
if (params.lat && params.lon) {
markerLatlng = L.latLng(params.lat, params.lon);
-
- var markerPosition = map.latLngToContainerPoint(markerLatlng),
- mapSize = map.getSize(),
- panBy = L.point(0, 0);
-
- if (markerPosition.x < 50) {
- panBy.x = markerPosition.x - 50;
- } else if (markerPosition.x > mapSize.x - 50) {
- panBy.x = 50 - mapSize.x + markerPosition.x;
- }
-
- if (markerPosition.y < 50) {
- panBy.y = markerPosition.y - 50;
- } else if (markerPosition.y > mapSize.y - 50) {
- panBy.y = 50 - mapSize.y + markerPosition.y;
- }
-
- map.panBy(panBy);
} else {
markerLatlng = map.getCenter();
}
+ map.panInside(markerLatlng, {
+ padding: [50, 50]
+ });
+
newNote = L.marker(markerLatlng, {
- icon: noteIcons["new"],
+ icon: noteIcons.new,
opacity: 0.9,
draggable: true
});
- newNote.on("dragstart dragend", function(a) {
+ newNote.on("dragstart dragend", function (a) {
newHalo(newNote.getLatLng(), a.type);
});
newNote.on("remove", function () {
addNoteButton.removeClass("active");
- }).on("dragstart",function () {
+ }).on("dragstart", function () {
$(newNote).stopTime("removenote");
}).on("dragend", function () {
content.find("textarea").focus();
$(e.target.form.add).prop("disabled", $(e.target).val() === "");
}
- content.find('input[type=submit]').on('click', function (e) {
+ content.find("input[type=submit]").on("click", function (e) {
e.preventDefault();
- createNote(newNote, e.target.form, '/api/0.6/notes.json');
+ createNote(newNote, e.target.form, "/api/0.6/notes.json");
});
return map.getState();