Compare commits

...

2 commits

Author SHA1 Message Date
Chandler Swift 2242863fdd
Add right-click menu 2024-02-02 03:14:58 -06:00
Chandler Swift 8d26ccf5c4
Upgrade dependencies, including OL7.1→8.2 2024-02-02 03:02:46 -06:00
5 changed files with 243 additions and 720 deletions

View file

@ -1,6 +1,6 @@
import TileLayer from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';
import Stamen from 'ol/source/Stamen.js';
import StadiaMaps from 'ol/source/StadiaMaps.js';
import chandlerLayer from './chandler/layer.js';
import amtrakLayer from './amtrak/layer.js';
@ -42,16 +42,16 @@ const layerCategories = [
{
name: "Stamen Watercolor (Raster)",
layer: new TileLayer({
source: new Stamen({
layer: 'watercolor',
source: new StadiaMaps({
layer: 'stamen_watercolor',
}),
}),
},
{
name: "Stamen Toner (Raster)",
layer: new TileLayer({
source: new Stamen({
layer: 'toner',
source: new StadiaMaps({
layer: 'stamen_toner',
}),
}),
},

34
main.js
View file

@ -1,9 +1,11 @@
import './style.css';
import {Map, View} from 'ol';
import {fromLonLat, get} from 'ol/proj.js';
import {fromLonLat, get, transform} from 'ol/proj.js';
import {defaults as defaultControls} from 'ol/control.js';
import Overlay from 'ol/Overlay.js';
import ContextMenu from 'ol-contextmenu';
import ToggleMenuControl from './ui/controls.js';
import layerCategories from './layers/index.js';
@ -27,8 +29,36 @@ closer.onclick = function () {
return false;
};
const contextMenu = new ContextMenu({
width: 170,
defaultItems: false,
items: [
{
text: 'Open on OSM',
callback: obj => {
const coords = transform(obj.coordinate, 'EPSG:3857', 'EPSG:4326')
window.open(
`https://www.openstreetmap.org/#map=${map.getView().getZoom()}/${coords[1]}/${coords[0]}`,
"_blank",
);
},
},
{
text: 'Copy lat/long',
callback: async function(obj){
const coords = transform(obj.coordinate, 'EPSG:3857', 'EPSG:4326')
try {
await navigator.clipboard.writeText(`${coords[1]}, ${coords[0]}`);
} catch (error) {
console.error(error.message);
}
},
},
],
});
const map = new Map({
controls: defaultControls().extend([new ToggleMenuControl()]),
controls: defaultControls().extend([new ToggleMenuControl(), contextMenu]),
target: 'map',
layers: [],
overlays: [popupOverlay],

915
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -12,6 +12,7 @@
"dependencies": {
"hls.js": "^1.5.2",
"ol": "latest",
"ol-contextmenu": "^5.3.0",
"proj4": "2.9.0"
}
}

View file

@ -1,4 +1,5 @@
@import "node_modules/ol/ol.css";
@import 'ol/ol.css';
@import 'ol-contextmenu/ol-contextmenu.css';
html, body {
margin: 0;