Clean up some of the map JS, reduce scope of globals

This commit is contained in:
John Firebaugh 2013-06-10 13:36:28 -07:00
parent ff52509d5a
commit 4563244fd1
6 changed files with 131 additions and 126 deletions

View file

@ -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();

View file

@ -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 () {

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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) {