// Leaflet extensions
-L.LatLngBounds.include({
+L.extend(L.LatLngBounds.prototype, {
getSouthLat: function () {
return this._southWest.lat;
},
getSize: function () {
return (this._northEast.lat - this._southWest.lat) *
(this._northEast.lng - this._southWest.lng);
+ },
+
+ wrap: function () {
+ return new L.LatLngBounds(this._southWest.wrap(), this._northEast.wrap());
}
});
-L.Bounds.include({
+L.extend(L.Bounds.prototype, {
getWidth: function () {
return this.max.x - this.min.x;
},
L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>;
var map;
+var objectLayer;
+var objectLoader;
var layers = [
{
map.invalidateSize();
});
- $("#" + divName).trigger("initialised");
-
return map;
}
}
function addObjectToMap(object, zoom, callback) {
- $.ajax({
+ if (objectLoader) {
+ objectLoader.abort();
+ }
+
+ if (objectLayer) {
+ map.removeLayer(objectLayer);
+ }
+
+ objectLoader = $.ajax({
url: OSM.apiUrl(object),
dataType: "xml",
success: function (xml) {
- var layer = new L.OSM.DataLayer(xml, {
+ objectLayer = new L.OSM.DataLayer(xml, {
style: {
strokeColor: "blue",
strokeWidth: 3,
}
});
- var bounds = layer.getBounds();
+ var bounds = objectLayer.getBounds();
if (zoom) {
map.fitBounds(bounds);
callback(bounds);
}
- layer.addTo(map);
+ objectLayer.addTo(map);
}
});
}