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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var map = createMap("small_map", {
|
var map = L.map("small_map", {
|
||||||
layerControl: false,
|
attributionControl: false,
|
||||||
panZoomControl: false,
|
zoomControl: false
|
||||||
attributionControl: 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();
|
var params = $("#small_map").data();
|
||||||
|
@ -79,7 +85,7 @@ $(document).ready(function () {
|
||||||
object.version = params.version - 1;
|
object.version = params.version - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
addObjectToMap(object, {
|
addObjectToMap(object, map, {
|
||||||
zoom: true,
|
zoom: true,
|
||||||
callback: function(extent) {
|
callback: function(extent) {
|
||||||
$("#loading").hide();
|
$("#loading").hide();
|
||||||
|
|
|
@ -1,6 +1,18 @@
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
var changesets = [], rects = {};
|
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);
|
var group = L.featureGroup().addTo(map);
|
||||||
|
|
||||||
$("[data-changeset]").each(function () {
|
$("[data-changeset]").each(function () {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
var marker;
|
var marker, map;
|
||||||
|
|
||||||
function setLocation(e) {
|
function setLocation(e) {
|
||||||
$("#latitude").val(e.latlng.lat);
|
$("#latitude").val(e.latlng.lat);
|
||||||
|
@ -21,7 +21,18 @@ $(document).ready(function () {
|
||||||
|
|
||||||
var params = $("#map").data();
|
var params = $("#map").data();
|
||||||
var centre = [params.lat, params.lon];
|
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);
|
map.setView(centre, params.zoom);
|
||||||
|
|
||||||
|
|
|
@ -5,15 +5,28 @@
|
||||||
//= require index/notes
|
//= require index/notes
|
||||||
//= require index/map_ui
|
//= require index/map_ui
|
||||||
|
|
||||||
|
var map, layers; // TODO: remove globals
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
var permalinks = $("#permalink").detach().html();
|
|
||||||
var marker;
|
var marker;
|
||||||
var params = OSM.mapParams();
|
var params = OSM.mapParams();
|
||||||
var map = createMap("map", {
|
|
||||||
|
map = L.map("map", {
|
||||||
|
attributionControl: false,
|
||||||
zoomControl: false,
|
zoomControl: false,
|
||||||
layerControl: 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'})
|
L.control.zoom({position: 'topright'})
|
||||||
|
@ -40,8 +53,6 @@ $(document).ready(function () {
|
||||||
|
|
||||||
L.control.scale().addTo(map);
|
L.control.scale().addTo(map);
|
||||||
|
|
||||||
map.attributionControl.setPrefix(permalinks);
|
|
||||||
|
|
||||||
map.on("moveend layeradd layerremove", updateLocation);
|
map.on("moveend layeradd layerremove", updateLocation);
|
||||||
|
|
||||||
if (!params.object_zoom) {
|
if (!params.object_zoom) {
|
||||||
|
@ -72,7 +83,7 @@ $(document).ready(function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.object) {
|
if (params.object) {
|
||||||
addObjectToMap(params.object, { zoom: params.object_zoom });
|
addObjectToMap(params.object, map, { zoom: params.object_zoom });
|
||||||
}
|
}
|
||||||
|
|
||||||
handleResize();
|
handleResize();
|
||||||
|
@ -91,7 +102,7 @@ $(document).ready(function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.type && data.id) {
|
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) {
|
if (marker) {
|
||||||
|
@ -172,3 +183,36 @@ $(document).ready(function () {
|
||||||
$("#query").focus();
|
$("#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,82 +12,40 @@ L.extend(L.LatLngBounds.prototype, {
|
||||||
|
|
||||||
L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>;
|
L.Icon.Default.imagePath = <%= "#{asset_prefix}/images".to_json %>;
|
||||||
|
|
||||||
var map;
|
|
||||||
var layers;
|
|
||||||
var objectLayer;
|
var objectLayer;
|
||||||
var objectLoader;
|
var objectLoader;
|
||||||
|
|
||||||
function createMap(divName, options, moreOptions) {
|
function mapLayers() {
|
||||||
if (!layers) {
|
return [
|
||||||
layers = [
|
{
|
||||||
{
|
klass: L.OSM.Mapnik,
|
||||||
klass: L.OSM.Mapnik,
|
attribution: "",
|
||||||
attribution: "",
|
keyid: "mapnik",
|
||||||
keyid: "mapnik",
|
layerCode: "M",
|
||||||
layerCode: "M",
|
name: I18n.t("javascripts.map.base.standard")
|
||||||
name: I18n.t("javascripts.map.base.standard")
|
},
|
||||||
},
|
{
|
||||||
{
|
klass: L.OSM.CycleMap,
|
||||||
klass: L.OSM.CycleMap,
|
attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
|
||||||
attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
|
keyid: "cyclemap",
|
||||||
keyid: "cyclemap",
|
layerCode: "C",
|
||||||
layerCode: "C",
|
name: I18n.t("javascripts.map.base.cycle_map")
|
||||||
name: I18n.t("javascripts.map.base.cycle_map")
|
},
|
||||||
},
|
{
|
||||||
{
|
klass: L.OSM.TransportMap,
|
||||||
klass: L.OSM.TransportMap,
|
attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
|
||||||
attribution: "Tiles courtesy of <a href='http://www.opencyclemap.org/' target='_blank'>Andy Allan</a>",
|
keyid: "transportmap",
|
||||||
keyid: "transportmap",
|
layerCode: "T",
|
||||||
layerCode: "T",
|
name: I18n.t("javascripts.map.base.transport_map")
|
||||||
name: I18n.t("javascripts.map.base.transport_map")
|
},
|
||||||
},
|
{
|
||||||
{
|
klass: L.OSM.MapQuestOpen,
|
||||||
klass: L.OSM.MapQuestOpen,
|
attribution: "Tiles courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>",
|
||||||
attribution: "Tiles courtesy of <a href='http://www.mapquest.com/' target='_blank'>MapQuest</a> <img src='http://developer.mapquest.com/content/osm/mq_logo.png'>",
|
keyid: "mapquest",
|
||||||
keyid: "mapquest",
|
layerCode: "Q",
|
||||||
layerCode: "Q",
|
name: I18n.t("javascripts.map.base.mapquest")
|
||||||
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) {
|
function getUserIcon(url) {
|
||||||
|
@ -101,7 +59,7 @@ function getUserIcon(url) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function addObjectToMap(object, options) {
|
function addObjectToMap(object, map, options) {
|
||||||
if (objectLoader) {
|
if (objectLoader) {
|
||||||
objectLoader.abort();
|
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 () {
|
$(document).ready(function () {
|
||||||
var map = createMap("map", {
|
var map = L.map("map", {
|
||||||
zoomControl: true,
|
attributionControl: false,
|
||||||
panZoomControl: false
|
zoomControl: false
|
||||||
|
}).addLayer(new L.OSM.Mapnik());
|
||||||
|
|
||||||
|
L.control.zoom({position: 'topright'})
|
||||||
|
.addTo(map);
|
||||||
|
|
||||||
|
$("#map").on("resized", function () {
|
||||||
|
map.invalidateSize();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (OSM.home) {
|
if (OSM.home) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue