Treat notes as map objects
This commit is contained in:
parent
fdcd5d6b80
commit
ec34d22039
2 changed files with 60 additions and 54 deletions
|
@ -1,7 +1,6 @@
|
||||||
OSM.Note = function (map) {
|
OSM.Note = function (map) {
|
||||||
var content = $("#sidebar_content"),
|
var content = $("#sidebar_content"),
|
||||||
page = {},
|
page = {};
|
||||||
halo, currentNote;
|
|
||||||
|
|
||||||
var noteIcons = {
|
var noteIcons = {
|
||||||
"new": L.icon({
|
"new": L.icon({
|
||||||
|
@ -70,29 +69,15 @@ OSM.Note = function (map) {
|
||||||
|
|
||||||
content.find("textarea").val("").trigger("input");
|
content.find("textarea").val("").trigger("input");
|
||||||
|
|
||||||
var data = $(".details").data(),
|
var data = $(".details").data();
|
||||||
latLng = L.latLng(data.coordinates.split(","));
|
|
||||||
|
|
||||||
if (!halo || !map.hasLayer(halo)) {
|
map.addObject({
|
||||||
halo = L.circleMarker(latLng, {
|
type: "note",
|
||||||
weight: 2.5,
|
id: parseInt(id, 10),
|
||||||
radius: 20,
|
latLng: L.latLng(data.coordinates.split(",")),
|
||||||
fillOpacity: 0.5,
|
icon: noteIcons[data.status]
|
||||||
color: "#FF6200"
|
|
||||||
});
|
|
||||||
map.addLayer(halo);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentNote && map.hasLayer(currentNote)) map.removeLayer(currentNote);
|
|
||||||
|
|
||||||
currentNote = L.marker(latLng, {
|
|
||||||
icon: noteIcons[data.status],
|
|
||||||
opacity: 1,
|
|
||||||
interactive: true
|
|
||||||
});
|
});
|
||||||
|
|
||||||
map.addLayer(currentNote);
|
|
||||||
|
|
||||||
if (callback) callback();
|
if (callback) callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,8 +93,7 @@ OSM.Note = function (map) {
|
||||||
}
|
}
|
||||||
|
|
||||||
page.unload = function () {
|
page.unload = function () {
|
||||||
if (map.hasLayer(halo)) map.removeLayer(halo);
|
map.removeObject();
|
||||||
if (map.hasLayer(currentNote)) map.removeLayer(currentNote);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return page;
|
return page;
|
||||||
|
|
|
@ -242,42 +242,64 @@ L.OSM.Map = L.Map.extend({
|
||||||
interactive: false
|
interactive: false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var haloStyle = {
|
||||||
|
weight: 2.5,
|
||||||
|
radius: 20,
|
||||||
|
fillOpacity: 0.5,
|
||||||
|
color: "#FF6200"
|
||||||
|
};
|
||||||
|
|
||||||
this.removeObject();
|
this.removeObject();
|
||||||
|
|
||||||
var map = this;
|
if (object.type === "note") {
|
||||||
this._objectLoader = $.ajax({
|
this._objectLoader = {
|
||||||
url: OSM.apiUrl(object),
|
abort: function () {}
|
||||||
dataType: "xml",
|
};
|
||||||
success: function (xml) {
|
this._object = object;
|
||||||
map._object = object;
|
this._objectLayer = L.featureGroup().addTo(this);
|
||||||
|
L.circleMarker(object.latLng, haloStyle).addTo(this._objectLayer);
|
||||||
|
L.marker(object.latLng, {
|
||||||
|
icon: object.icon,
|
||||||
|
opacity: 1,
|
||||||
|
interactive: true
|
||||||
|
}).addTo(this._objectLayer);
|
||||||
|
if (callback) callback(this._objectLayer.getBounds());
|
||||||
|
} else { // element or changeset handled by L.OSM.DataLayer
|
||||||
|
var map = this;
|
||||||
|
this._objectLoader = $.ajax({
|
||||||
|
url: OSM.apiUrl(object),
|
||||||
|
dataType: "xml",
|
||||||
|
success: function (xml) {
|
||||||
|
map._object = object;
|
||||||
|
|
||||||
map._objectLayer = new L.OSM.DataLayer(null, {
|
map._objectLayer = new L.OSM.DataLayer(null, {
|
||||||
styles: {
|
styles: {
|
||||||
node: objectStyle,
|
node: objectStyle,
|
||||||
way: objectStyle,
|
way: objectStyle,
|
||||||
area: objectStyle,
|
area: objectStyle,
|
||||||
changeset: changesetStyle
|
changeset: changesetStyle
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
map._objectLayer.interestingNode = function (node, ways, relations) {
|
|
||||||
if (object.type === "node") {
|
|
||||||
return true;
|
|
||||||
} else if (object.type === "relation") {
|
|
||||||
for (var i = 0; i < relations.length; i++) {
|
|
||||||
if (relations[i].members.indexOf(node) !== -1) return true;
|
|
||||||
}
|
}
|
||||||
} else {
|
});
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
map._objectLayer.addData(xml);
|
map._objectLayer.interestingNode = function (node, ways, relations) {
|
||||||
map._objectLayer.addTo(map);
|
if (object.type === "node") {
|
||||||
|
return true;
|
||||||
|
} else if (object.type === "relation") {
|
||||||
|
for (var i = 0; i < relations.length; i++) {
|
||||||
|
if (relations[i].members.indexOf(node) !== -1) return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if (callback) callback(map._objectLayer.getBounds());
|
map._objectLayer.addData(xml);
|
||||||
}
|
map._objectLayer.addTo(map);
|
||||||
});
|
|
||||||
|
if (callback) callback(map._objectLayer.getBounds());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
removeObject: function () {
|
removeObject: function () {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue