X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/c02b131a296b70ac80fc0e8348bcffbc7341eac9..ab4de87d1eef4546a96738154cf81b7d7f72d988:/app/assets/javascripts/leaflet.map.js diff --git a/app/assets/javascripts/leaflet.map.js b/app/assets/javascripts/leaflet.map.js index 105b03ed6..44aa530d9 100644 --- a/app/assets/javascripts/leaflet.map.js +++ b/app/assets/javascripts/leaflet.map.js @@ -242,42 +242,70 @@ L.OSM.Map = L.Map.extend({ interactive: false }; + var haloStyle = { + weight: 2.5, + radius: 20, + fillOpacity: 0.5, + color: "#FF6200" + }; + this.removeObject(); - 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, { - styles: { - node: objectStyle, - way: objectStyle, - area: objectStyle, - 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; - } - }; + if (object.type === "note") { + this._objectLoader = { + abort: function () {} + }; - map._objectLayer.addData(xml); - map._objectLayer.addTo(map); + this._object = object; + this._objectLayer = L.featureGroup().addTo(this); - if (callback) callback(map._objectLayer.getBounds()); + L.circleMarker(object.latLng, haloStyle).addTo(this._objectLayer); + + if (object.icon) { + 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, { + styles: { + node: objectStyle, + way: objectStyle, + area: objectStyle, + 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.addTo(map); + + if (callback) callback(map._objectLayer.getBounds()); + } + }); + } }, removeObject: function () {