Compare commits

..

No commits in common. "1a2f9908fac4917abdb54ef0c52dcf702a140ba2" and "657867309e110e842d36b960e7d6b8158eddccc9" have entirely different histories.

2 changed files with 6 additions and 87 deletions

View File

@ -1,4 +1,3 @@
var editor_mode = 0;
var mymap; var mymap;
var streetLabelsRenderer = new L.StreetLabels({ var streetLabelsRenderer = new L.StreetLabels({
collisionFlg: true, collisionFlg: true,
@ -120,7 +119,7 @@ function load_geojson(name, url, iconname, iconcolor, active=1, style={}) {
permanent: true, permanent: true,
direction: "center", direction: "center",
className: "city-names" className: "city-names"
}).openTooltip().on('click', jump_to_marker); }).openTooltip();
}; };
pointToLayer = function(feature, latlng) { pointToLayer = function(feature, latlng) {
label = String(feature.properties.name) label = String(feature.properties.name)
@ -174,62 +173,6 @@ load_geojson("Streets", "./geojson/streets.json", "street", "blue", 0);
L.control.scale().addTo(mymap); L.control.scale().addTo(mymap);
function get_current_location_str() {
var latlng = mymap.getCenter();
return Math.round(latlng.lat) + "," + Math.round(latlng.lng) + "," + mymap.getZoom();
}
/* Important: Do not use mymap.setView, use this function instead */
function jump_to(latlng, zoom = -1) {
if (zoom == -1)
zoom = mymap.getZoom();
document.location.hash = "#" + Math.round(latlng.lat) + "," + Math.round(latlng.lng) + "," + zoom;
}
function jump_to_marker(e) {
if (!editor_mode)
jump_to(e.target.getLatLng());
}
function prompt_location() {
var str = prompt("Enter coordinates to jump to:\n\n" +
"Format: x, y [, zoom]", get_current_location_str());
if (str)
document.location.hash = "#" + str;
}
L.MyControl = L.Control.extend({
options: {
position: 'topleft',
callback: null,
kind: '',
html: ''
},
onAdd: function (map) {
var container = L.DomUtil.create('div', 'leaflet-control leaflet-bar'),
link = L.DomUtil.create('a', '', container);
link.href = '#';
link.title = this.options.title;
link.innerHTML = this.options.html;
L.DomEvent.on(link, 'click', L.DomEvent.stop)
.on(link, 'click', function () {
window.LAYER = this.options.callback.call();
}, this);
return container;
}
});
L.GotoControl = L.MyControl.extend({
options: {
position: 'topleft',
callback: prompt_location,
title: 'Jump to coordinates.',
html: '⌖'
}
});
mymap.addControl(new L.GotoControl());
var popup = L.popup(); var popup = L.popup();
L.AwesomeMarkers.Icon.prototype.options.prefix = 'fa'; L.AwesomeMarkers.Icon.prototype.options.prefix = 'fa';
@ -243,23 +186,3 @@ function onMapClick(e) {
} }
mymap.on('click', onMapClick); mymap.on('click', onMapClick);
function update_hash_from_position(e) {
document.location.hash = "#" + get_current_location_str();
}
mymap.on('zoomend', update_hash_from_position);
mymap.on('dragend', update_hash_from_position);
function onHashChange(e) {
if (document.location.hash == "#" + get_current_location_str())
return; // We're already there
coordstr = window.location.hash.slice(1).replace(/%20/g, "").split(",");
if (coordstr.length < 2)
coordstr.push(0); // Default y
if (coordstr.length < 3)
coordstr.push(mymap.getZoom()); // Default zoom
var latlng = L.latLng(parseFloat(coordstr[0]), parseFloat(coordstr[1]));
mymap.setView(latlng, parseInt(coordstr[2]));
}
window.addEventListener("hashchange", onHashChange, false);
onHashChange(null);

View File

@ -1,7 +1,6 @@
const queryString = window.location.search; const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString); const urlParams = new URLSearchParams(queryString);
editor_mode = urlParams.has('editor'); if (urlParams.has('editor')) {
if (editor_mode) {
var draw_layer; var draw_layer;
var polyline; var polyline;
@ -28,8 +27,6 @@ if (editor_mode) {
} }
function onDragEnd(e) { function onDragEnd(e) {
if (!polyline)
return;
var latlngs = polyline.getLatLngs(); var latlngs = polyline.getLatLngs();
for (var i = 0; i < latlngs.length; i++) { for (var i = 0; i < latlngs.length; i++) {
@ -63,23 +60,22 @@ if (editor_mode) {
} }
} }
function editor_onHashChange() { function onHashChange() {
if (("#" + get_location_string()) != window.location.hash) { if (("#" + get_location_string()) != window.location.hash) {
polyline.remove(mymap); polyline.remove(mymap);
onLoad(0); onLoad(0);
} }
} }
window.removeEventListener("hashchange", onHashChange, false); window.addEventListener("hashchange", onHashChange, false);
window.addEventListener("hashchange", editor_onHashChange, false);
window.addEventListener("mouseup", onDragEnd, false); // Workaround as polyline.on(dragend, ) doesn't seem to work window.addEventListener("mouseup", onDragEnd, false); // Workaround as polyline.on(dragend, ) doesn't seem to work
// Configure map for better editing // Configure map for better editing
document.getElementById('mapid').classList.add("no-aa"); document.getElementById('mapid').classList.add("no-aa");
mymap.setMaxZoom(14); mymap.setMaxZoom(14);
mymap.off('click', onMapClick); mymap.off('click', onMapClick);
mymap.off('zoomend', update_hash_from_position); //mymap.setOpacity(0.7);
mymap.off('dragend', update_hash_from_position);
onLoad(); onLoad();
function get_location_string() { function get_location_string() {