Clean up some of the map JS, reduce scope of globals
This commit is contained in:
parent
ff52509d5a
commit
4563244fd1
6 changed files with 131 additions and 126 deletions
|
@ -21,10 +21,16 @@ $(document).ready(function () {
|
|||
return false;
|
||||
}
|
||||
|
||||
var map = createMap("small_map", {
|
||||
layerControl: false,
|
||||
panZoomControl: false,
|
||||
attributionControl: false
|
||||
var map = L.map("small_map", {
|
||||
attributionControl: false,
|
||||
zoomControl: false
|
||||
}).addLayer(new L.OSM.Mapnik());
|
||||
|
||||
L.control.zoom({position: 'topright'})
|
||||
.addTo(map);
|
||||
|
||||
$("#small_map").on("resized", function () {
|
||||
map.invalidateSize();
|
||||
});
|
||||
|
||||
var params = $("#small_map").data();
|
||||
|
@ -79,7 +85,7 @@ $(document).ready(function () {
|
|||
object.version = params.version - 1;
|
||||
}
|
||||
|
||||
addObjectToMap(object, {
|
||||
addObjectToMap(object, map, {
|
||||
zoom: true,
|
||||
callback: function(extent) {
|
||||
$("#loading").hide();
|
||||
|
|
|
@ -1,6 +1,18 @@
|
|||
$(document).ready(function () {
|
||||
var changesets = [], rects = {};
|
||||
var map = createMap("changeset_list_map");
|
||||
|
||||
var map = L.map("changeset_list_map", {
|
||||
attributionControl: false,
|
||||
zoomControl: false
|
||||
}).addLayer(new L.OSM.Mapnik());
|
||||
|
||||
L.control.zoom({position: 'topright'})
|
||||
.addTo(map);
|
||||
|
||||
$("#changeset_list_map").on("resized", function () {
|
||||
map.invalidateSize();
|
||||
});
|
||||
|
||||
var group = L.featureGroup().addTo(map);
|
||||
|
||||
$("[data-changeset]").each(function () {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
$(document).ready(function () {
|
||||
var marker;
|
||||
var marker, map;
|
||||
|
||||
function setLocation(e) {
|
||||
$("#latitude").val(e.latlng.lat);
|
||||
|
@ -21,7 +21,18 @@ $(document).ready(function () {
|
|||
|
||||
var params = $("#map").data();
|
||||
var centre = [params.lat, params.lon];
|
||||
var map = createMap("map");
|
||||
|
||||
map = L.map("map", {
|
||||
attributionControl: false,
|
||||
zoomControl: false
|
||||
}).addLayer(new L.OSM.Mapnik());
|
||||
|
||||
L.control.zoom({position: 'topright'})
|
||||
.addTo(map);
|
||||
|
||||
$("#map").on("resized", function () {
|
||||
map.invalidateSize();
|
||||
});
|
||||
|
||||
map.setView(centre, params.zoom);
|
||||
|
||||
|
|
|
@ -5,15 +5,28 @@
|
|||
//= require index/notes
|
||||
//= require index/map_ui
|
||||
|
||||
var map, layers; // TODO: remove globals
|
||||
|
||||
$(document).ready(function () {
|
||||
var permalinks = $("#permalink").detach().html();
|
||||
var marker;
|
||||
var params = OSM.mapParams();
|
||||
var map = createMap("map", {
|
||||
|
||||
map = L.map("map", {
|
||||
attributionControl: false,
|
||||
zoomControl: false,
|
||||
layerControl: false
|
||||
}, {
|
||||
locateControl: true
|
||||
});
|
||||
|
||||
layers = mapLayers();
|
||||
|
||||
for (var i = 0; i < layers.length; i++) {
|
||||
layers[i].layer = new (layers[i].klass)(layers[i]);
|
||||
}
|
||||
|
||||
layers[0].layer.addTo(map);
|
||||
|
||||
$("#map").on("resized", function () {
|
||||
map.invalidateSize();
|
||||
});
|
||||
|
||||
L.control.zoom({position: 'topright'})
|
||||
|
@ -40,8 +53,6 @@ $(document).ready(function () {
|
|||
|
||||
L.control.scale().addTo(map);
|
||||
|
||||
map.attributionControl.setPrefix(permalinks);
|
||||
|
||||
map.on("moveend layeradd layerremove", updateLocation);
|
||||
|
||||
if (!params.object_zoom) {
|
||||
|
@ -72,7 +83,7 @@ $(document).ready(function () {
|
|||
}
|
||||
|
||||
if (params.object) {
|
||||
addObjectToMap(params.object, { zoom: params.object_zoom });
|
||||
addObjectToMap(params.object, map, { zoom: params.object_zoom });
|
||||
}
|
||||
|
||||
handleResize();
|
||||
|
@ -91,7 +102,7 @@ $(document).ready(function () {
|
|||
}
|
||||
|
||||
if (data.type && data.id) {
|
||||
addObjectToMap(data, { zoom: true, style: { opacity: 0.2, fill: false } });
|
||||
addObjectToMap(data, map, { zoom: true, style: { opacity: 0.2, fill: false } });
|
||||
}
|
||||
|
||||
if (marker) {
|
||||
|
@ -172,3 +183,36 @@ $(document).ready(function () {
|
|||
$("#query").focus();
|
||||
}
|
||||
});
|
||||
|
||||
function getMapBaseLayer() {
|
||||
for (var i = 0; i < layers.length; i++) {
|
||||
if (map.hasLayer(layers[i].layer)) {
|
||||
return layers[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getMapLayers() {
|
||||
var layerConfig = "";
|
||||
for (var i = 0; i < layers.length; i++) {
|
||||
if (map.hasLayer(layers[i].layer)) {
|
||||
layerConfig += layers[i].layerCode;
|
||||
}
|
||||
}
|
||||
return layerConfig;
|
||||
}
|
||||
|
||||
function setMapLayers(layerConfig) {
|
||||
var foundLayer = false;
|
||||
for (var i = 0; i < layers.length; i++) {
|
||||
if (layerConfig.indexOf(layers[i].layerCode) >= 0) {
|
||||
map.addLayer(layers[i].layer);
|
||||
foundLayer = true;
|
||||
} else {
|
||||
map.removeLayer(layers[i].layer);
|
||||
}
|
||||
}
|
||||
if (!foundLayer) {
|
||||
map.addLayer(layers[0].layer);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,14 +12,11 @@ L.extend(L.LatLngBounds.prototype, {
|
|||
|
||||
L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>;
|
||||
|
||||
var map;
|
||||
var layers;
|
||||
var objectLayer;
|
||||
var objectLoader;
|
||||
|
||||
function createMap(divName, options, moreOptions) {
|
||||
if (!layers) {
|
||||
layers = [
|
||||
function mapLayers() {
|
||||
return [
|
||||
{
|
||||
klass: L.OSM.Mapnik,
|
||||
attribution: "",
|
||||
|
@ -48,46 +45,7 @@ function createMap(divName, options, moreOptions) {
|
|||
layerCode: "Q",
|
||||
name: I18n.t("javascripts.map.base.mapquest")
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
moreOptions = moreOptions || {};
|
||||
|
||||
options = $.extend({zoomControl: true, panZoomControl: true, layerControl: true}, options);
|
||||
|
||||
map = L.map(divName, $.extend({}, options, {panControl: false, zoomsliderControl: false, maxZoom: 18}));
|
||||
|
||||
if (map.attributionControl) {
|
||||
map.attributionControl.setPrefix('');
|
||||
}
|
||||
|
||||
|
||||
var layersControl = L.control.layers();
|
||||
|
||||
if (options.layerControl) {
|
||||
layersControl.addTo(map);
|
||||
map.layersControl = layersControl;
|
||||
}
|
||||
|
||||
if (moreOptions.locateControl) {
|
||||
var loc = L.control.locate({
|
||||
position: 'topright'
|
||||
});
|
||||
loc.addTo(map);
|
||||
}
|
||||
|
||||
for (var i = 0; i < layers.length; i++) {
|
||||
layers[i].layer = new (layers[i].klass)(layers[i]);
|
||||
layersControl.addBaseLayer(layers[i].layer, layers[i].name);
|
||||
}
|
||||
|
||||
layers[0].layer.addTo(map);
|
||||
|
||||
$("#" + divName).on("resized", function () {
|
||||
map.invalidateSize();
|
||||
});
|
||||
|
||||
return map;
|
||||
]
|
||||
}
|
||||
|
||||
function getUserIcon(url) {
|
||||
|
@ -101,7 +59,7 @@ function getUserIcon(url) {
|
|||
});
|
||||
}
|
||||
|
||||
function addObjectToMap(object, options) {
|
||||
function addObjectToMap(object, map, options) {
|
||||
if (objectLoader) {
|
||||
objectLoader.abort();
|
||||
}
|
||||
|
@ -150,36 +108,3 @@ function addObjectToMap(object, options) {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getMapBaseLayer() {
|
||||
for (var i = 0; i < layers.length; i++) {
|
||||
if (map.hasLayer(layers[i].layer)) {
|
||||
return layers[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getMapLayers() {
|
||||
var layerConfig = "";
|
||||
for (var i = 0; i < layers.length; i++) {
|
||||
if (map.hasLayer(layers[i].layer)) {
|
||||
layerConfig += layers[i].layerCode;
|
||||
}
|
||||
}
|
||||
return layerConfig;
|
||||
}
|
||||
|
||||
function setMapLayers(layerConfig) {
|
||||
var foundLayer = false;
|
||||
for (var i = 0; i < layers.length; i++) {
|
||||
if (layerConfig.indexOf(layers[i].layerCode) >= 0) {
|
||||
map.addLayer(layers[i].layer);
|
||||
foundLayer = true;
|
||||
} else {
|
||||
map.removeLayer(layers[i].layer);
|
||||
}
|
||||
}
|
||||
if (!foundLayer) {
|
||||
map.addLayer(layers[0].layer);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,14 @@
|
|||
$(document).ready(function () {
|
||||
var map = createMap("map", {
|
||||
zoomControl: true,
|
||||
panZoomControl: false
|
||||
var map = L.map("map", {
|
||||
attributionControl: false,
|
||||
zoomControl: false
|
||||
}).addLayer(new L.OSM.Mapnik());
|
||||
|
||||
L.control.zoom({position: 'topright'})
|
||||
.addTo(map);
|
||||
|
||||
$("#map").on("resized", function () {
|
||||
map.invalidateSize();
|
||||
});
|
||||
|
||||
if (OSM.home) {
|
||||
|
|
Loading…
Add table
Reference in a new issue