Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
leaflet-tilelayer-swiss
Advanced tools
Leaflet.TileLayer.Swiss is a Leaflet plugin for displaying national maps of Switzerland using map tiles from Swisstopo.
Leaflet.TileLayer.Swiss is a Leaflet plugin for displaying national maps of Switzerland using map tiles from Swisstopo. This plugin is not affiliated with or endorsed by Swisstopo.
Requires Leaflet version 1.x
The quick start example is a good place to start.
There is also a list of all available map layers and a slighly more advanced example.
Include this plugin after the Leaflet JavaScript file:
<script src="https://unpkg.com/leaflet-tilelayer-swiss@2.0.2/dist/Leaflet.TileLayer.Swiss.umd.js" crossorigin
integrity="sha384-RqGocB0JTU8Qswz8p4XRhx1rRTPnYiIHuvS9LQ2WqmR0IA3aj8t8WarEj/jalqsi"></script>
Put a div element with a certain id where you want your map to be:
<div id="mapid"></div>
Make sure the map container has a defined height, for example by setting it in CSS:
#mapid { height: 400px; }
Set up the Swiss map:
// Create map
var map = L.map('mapid', {
// Use LV95 (EPSG:2056) projection
crs: L.CRS.EPSG2056,
});
// Add Swiss layer with default options
var swissLayer = L.tileLayer.swiss().addTo(map);
// Limit map movement to layer bounds
map.setMaxBounds(swissLayer.options.bounds)
// Center the map on Switzerland
map.fitBounds(swissLayer.options.switzerlandBounds);
// Add a marker with a popup in Bern
L.marker(L.CRS.EPSG2056.unproject(L.point(2600000, 1200000))).addTo(map)
.bindPopup('The old observatory')
.openPopup();
Options are shown with their default values.
L.tileLayer.swiss({
// Coordinate reference system. EPSG2056 and EPSG21871 are available.
crs: L.CRS.EPSG2056
// Image format (jpeg or png). Only one format is available per layer.
format: 'jpeg',
// Layer name.
layer: 'ch.swisstopo.pixelkarte-farbe',
// Maximum zoom. Availability of zoom levels depends on the layer.
maxNativeZoom: 27,
// Timestamp. Most (but not all) layers have a 'current' timestamp.
// Some layers have multiple versions with different timestamps.
timestamp: 'current',
// Map tile URL. Appropriate defaults are chosen based on the crs option.
url: 'https://wmts{s}.geo.admin.ch/1.0.0/{layer}/default/{timestamp}/2056/{z}/{x}/{y}.{format}'
});
A list with all available layers and corresponding options is available here.
Two CRS are commonly used in Switzerland:
In order to use EPSG:21781, both map and layer CRS have to be adapted:
var map = L.map('map', { crs: L.CRS.EPSG21781 });
var swissLayer = L.tileLayer.swiss({ crs: L.CRS.EPSG21781 }).addTo(map);
map.setView(L.CRS.EPSG21781.unproject(L.point(600000, 200000)), 16);
You will need to register with Swisstopo if you want to publish an application that displays base map layers from Swisstopo.
If you have your own domain (e.g. example.com), you can sign up for Swisstopo web access. There is a free tier (no credit card required) limited to 25 gigapixels of map tiles per year, and there are paid options if you need more.
If you do not have your own domain, sadly you are out of luck, as Swisstopo currently does not provide any other way to sign up for access to the map tiles.
The usage restriction is enforced by checking the HTTP Referer header, so your application will automatically work once you have signed up.
You will probably also want to test your application locally before publishing it. localhost
is also accepted
as a Referer, so if you
run a local web server, you should be able to access the map tiles.
Swisstopo also provides some overlay layers which are freely accessible, see list of layers and their accessiblity.
Swisstopo, like most map tile providers, requires that you display a copyright attribution below the map.
This plugin adds a map attribution which links to Swisstopo, the same as it is done by the official Swisstopo API.
The terms of service suggest using the phrase "Source: Federal Topographical Office (agreement no.)", which you may want to use if you have an agreement number from Swisstopo. You will probably get such a number if you sign up for paid access to the map tiles.
This plugin is licensed under the MIT license, see the LICENSE file.
Thanks to Swisstopo and the Geoinformation Act for providing excellent geodata.
Thanks to @procrastinatio whose blog post taught me how to use Swisstopo layers in Leaflet a few year ago.
FAQs
Leaflet.TileLayer.Swiss is a Leaflet plugin for displaying national maps of Switzerland using map tiles from Swisstopo.
The npm package leaflet-tilelayer-swiss receives a total of 127 weekly downloads. As such, leaflet-tilelayer-swiss popularity was classified as not popular.
We found that leaflet-tilelayer-swiss demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.