Protomaps Basemap ಟೈಲ್ಗಳು
ಸಂಪೂರ್ಣ Protomaps Basemap, ಜೂಮ್ 0 ರಿಂದ 15 ರವರೆಗೆ, ಸಾಮಾನ್ಯ HTTP ಮೂಲಕ ಒಂದೇ PMTiles ಆರ್ಕೈವ್ ಆಗಿ ಒದಗಿಸಲಾಗಿದೆ. ಯಾವುದೇ PMTiles ಕ್ಲೈಂಟ್ ಅನ್ನು ಈ URL ಕಡೆಗೆ ತೋರಿಸಿದರೆ ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ.
https://tiles.jasontally.com/basemap.pmtiles
- API ಕೀ ಇಲ್ಲನೋಂದಣಿ ಬೇಕಿಲ್ಲ, ನಿಮ್ಮ ಕೋಡ್ನಲ್ಲಿ ಯಾವುದೇ ಟೋಕನ್ ಇರುವುದಿಲ್ಲ.
- ದರ ಮಿತಿ ಇಲ್ಲವೇಗ ನಿಯಂತ್ರಣವಿಲ್ಲ, ಕೋಟಾ ಇಲ್ಲ, ಬರ್ಸ್ಟ್ ಮಿತಿಯೂ ಇಲ್ಲ.
- ಮಾಸಿಕಹೊಸ Protomaps ಬಿಡುಗಡೆಯಿಂದ ತಿಂಗಳಿಗೊಮ್ಮೆ ಮರುನಿರ್ಮಿಸಲಾಗುತ್ತದೆ.
ನಿರ್ಬಂಧಿತ OpenStreetMap ಟೈಲ್, ಅಥವಾ tile.openstreetmap.org ನಿಂದ 403 ಬರುತ್ತಿದೆಯೇ? ಇಲ್ಲಿಂದ ಪ್ರಾರಂಭಿಸಿ.
ಪರೀಕ್ಷಿಸಿ ನೋಡಿ
ಅದೇ ಆರ್ಕೈವ್ ಮೂರು ಶೈಲಿಗಳಲ್ಲಿ. ಶೈಲಿಯನ್ನು ಬದಲಾಯಿಸಿದಾಗ ಈಗಾಗಲೇ ಲೋಡ್ ಆದ ಟೈಲ್ಗಳು ಹಾಗೆಯೇ ಉಳಿಯುವುದರಿಂದ ಬದಲಾವಣೆ ತಕ್ಷಣವೇ ಆಗುತ್ತದೆ.
ನಿಮ್ಮದೇ ಶೈಲಿ ರೂಪಿಸಿ
ಬಣ್ಣವನ್ನು ಬದಲಿಸಿ ಅಥವಾ ಪದರವನ್ನು ಆಫ್ ಮಾಡಿ, ನೀವು ಬದಲಿಸಿದಂತೆಯೇ ನಕ್ಷೆ ನವೀಕರಣಗೊಳ್ಳುತ್ತದೆ. ನಂತರ ಶೈಲಿ JSON ಅನ್ನು ನಕಲಿಸಿ; ಇದು ನೀವು ಸ್ವತಃ ಹೋಸ್ಟ್ ಮಾಡಬಹುದಾದ ಸಾಮಾನ್ಯ MapLibre ಶೈಲಿಯಾಗಿದೆ. ಇದು ಈ ಟೈಲ್ಗಳನ್ನೇ ತೋರಿಸುವುದರಿಂದ ನೀವು ಇದನ್ನು ಎಲ್ಲಿ ಇಟ್ಟರೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
ಇದನ್ನು ಬಳಸಿ
ಈ ಆರ್ಕೈವ್ HTTP ರೇಂಜ್ ವಿನಂತಿಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಪ್ರತಿಯೊಂದು PMTiles ಕ್ಲೈಂಟ್ ಇದನ್ನು ಓದಬಲ್ಲದು.
ಒಂದು. ಪುಟದಲ್ಲಿ ನಕ್ಷೆಯನ್ನು ಹಾಕಿ
ಈ ಫೈಲ್ ಅನ್ನು ನಕಲಿಸಿ. ಇದುವೇ ಸಂಪೂರ್ಣ ಉದಾಹರಣೆ: ಮೂರು ಟ್ಯಾಗ್ಗಳು, ಒಂದು ಶೈಲಿ URL, ಒಂದು ನಕ್ಷೆ. ಎರಡೂ ಲೈಬ್ರರಿಗಳ ಆವೃತ್ತಿಯನ್ನು ನಿಗದಿಪಡಿಸಲಾಗಿದೆ ಮತ್ತು ಅವು BSD-3-Clause ಪರವಾನಗಿ ಹೊಂದಿವೆ; ನೀವು CDN ಬಳಸಲು ಇಷ್ಟಪಡದಿದ್ದರೆ ಅದೇ ಫೈಲ್ಗಳನ್ನು ಈ ಹೋಸ್ಟ್ನಿಂದಲೂ ಒದಗಿಸಲಾಗುತ್ತದೆ.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Basemap</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.css">
<script src="https://cdn.jsdelivr.net/npm/maplibre-gl@5.24.0/dist/maplibre-gl.js"></script>
<script src="https://cdn.jsdelivr.net/npm/pmtiles@3.2.1/dist/pmtiles.js"></script>
<style>html, body, #map { margin: 0; height: 100%; }</style>
</head>
<body>
<div id="map"></div>
<script>
// Teach MapLibre how to read a PMTiles archive.
const protocol = new pmtiles.Protocol();
maplibregl.addProtocol("pmtiles", protocol.tile);
new maplibregl.Map({
container: "map",
style: "https://tiles.jasontally.com/styles/light.json",
center: [2.35, 48.85], // Paris
zoom: 4
});
</script>
</body>
</html>
ಎರಡು. ನಿಮ್ಮಲ್ಲಿ ಈಗಾಗಲೇ ಇರುವ ಶೈಲಿಯಲ್ಲಿ ಟೈಲ್ಗಳನ್ನು ಬದಲಾಯಿಸಿ
ಪ್ರತಿಯೊಂದು MapLibre ಶೈಲಿಯು ತನ್ನ ಟೈಲ್ಗಳನ್ನು ಒಂದು ಮೂಲದಿಂದ ಓದುತ್ತದೆ. ಈ ಟೈಲ್ಗಳನ್ನು ಬಳಸಲು, ಆ ಒಂದು url ಅನ್ನು ಬದಲಾಯಿಸಿ. ಶೈಲಿಯಲ್ಲಿ ಬೇರೆ ಏನೂ ಬದಲಾಗುವುದಿಲ್ಲ.
"sources": {
"protomaps": {
"type": "vector",
- "url": "pmtiles://https://demo-bucket.protomaps.com/v4.pmtiles",
+ "url": "pmtiles://https://tiles.jasontally.com/basemap.pmtiles",
"attribution": "<a href=\"https://www.openstreetmap.org/copyright\">© OpenStreetMap contributors</a>"
}
}
ಅಥವಾ ಇದನ್ನು ಕೋಡ್ನಲ್ಲಿ ಮಾಡಿ; ಶೈಲಿಯು ನಿಮ್ಮ ನಿಯಂತ್ರಣದಲ್ಲಿಲ್ಲದ ಸರ್ವರ್ನಿಂದ ಬರುತ್ತಿದ್ದರೆ ಇದು ಉಪಯುಕ್ತ:
// Rewrite every PMTiles source in a style to point at these tiles.
const style = await (await fetch("https://your-server/style.json")).json();
for (const source of Object.values(style.sources)) {
if (source.url?.startsWith("pmtiles://")) {
source.url = "pmtiles://https://tiles.jasontally.com/basemap.pmtiles";
}
}
new maplibregl.Map({ container: "map", style, center: [2.35, 48.85], zoom: 4 });
ಮೂರು. ನೀವು ರಚಿಸಿದ ಶೈಲಿಯನ್ನು ಎಲ್ಲಿ ಇಡಬೇಕು
ಮೇಲಿನ ಬಿಲ್ಡರ್ನಲ್ಲಿರುವ ಶೈಲಿ JSON ಗುಂಡಿಯು ನೀವು ಮಾಡಿದ ಬದಲಾವಣೆಗಳೊಂದಿಗೆ ಈ ನಕ್ಷೆ ಈಗ ಚಿತ್ರಿಸುತ್ತಿರುವ ಶೈಲಿಯನ್ನು ತೆರೆಯುತ್ತದೆ, ಮತ್ತು ಆ ಸಂವಾದ ಪೆಟ್ಟಿಗೆಯಲ್ಲಿ ನಕಲಿಸುವ ಗುಂಡಿ ಇದೆ. ಅದು ನೀಡುವುದನ್ನು ಬಳಸಲು ಎರಡು ವಿಧಾನಗಳಿವೆ, ಮತ್ತು ಎರಡೂ ಸಾಮಾನ್ಯ ವೆಬ್ ಪುಟಗಳೇ ಆಗಿವೆ.
ಅದನ್ನು ನಿಮ್ಮ ಪುಟದ ಪಕ್ಕದಲ್ಲಿ ಫೈಲ್ ಆಗಿ ಉಳಿಸಿ ಮತ್ತು ಈ ಹೋಸ್ಟ್ನಲ್ಲಿನ ಮೂರು ಶೈಲಿಗಳನ್ನು ಬಳಸುವಂತೆಯೇ style ಅನ್ನು ಅದರ ಕಡೆಗೆ ತೋರಿಸಿ. ಶೈಲಿಯು ನಿಮ್ಮದಾಗಿದ್ದು ನಿಮ್ಮ ಸೈಟ್ನೊಂದಿಗೆ ಬದಲಾಗುತ್ತಿದ್ದರೆ ಇದನ್ನು ಆಯ್ಕೆಮಾಡಿ:
// Save the copied JSON as my-basemap.json beside this file.
new maplibregl.Map({
container: "map",
style: "my-basemap.json", // relative, same origin
center: [2.35, 48.85],
zoom: 4
});
ಅಥವಾ ಅದನ್ನು HTML ಒಳಗೆಯೇ ಇರಿಸಿ; ಆಗ ಸಾಗಿಸಲು ಒಂದೇ ಫೈಲ್ ಇರುತ್ತದೆ ಮತ್ತು ಪ್ರತ್ಯೇಕವಾಗಿ ಹೋಸ್ಟ್ ಮಾಡಬೇಕಾದದ್ದು ಏನೂ ಇರುವುದಿಲ್ಲ. ಅದೇ ಶೈಲಿ, ಅದು ಇರುವ ಜಾಗ ಮಾತ್ರ ಬೇರೆ:
// The copied JSON, pasted straight into the page.
const myStyle = {
"version": 8,
"name": "Protomaps Basemap — custom",
"glyphs": "https://tiles.jasontally.com/font/{fontstack}/{range}.pbf",
"sprite": "https://tiles.jasontally.com/sprites/v4/light",
"sources": { /* ... as copied ... */ },
"layers": [ /* ... as copied ... */ ]
};
new maplibregl.Map({ container: "map", style: myStyle, zoom: 4 });
glyphs ಮತ್ತು sprite ಸಾಲುಗಳನ್ನು ಇರುವಂತೆಯೇ ಬಿಡಿ. ಅವುಗಳೇ ಹೆಸರುಗಳು ಮತ್ತು ಐಕಾನ್ಗಳನ್ನು ಚಿತ್ರಿಸುತ್ತವೆ, ಮತ್ತು ಅವು ಈ ಹೋಸ್ಟ್ ಅನ್ನು ತೋರಿಸುವುದರಿಂದ ನಿಮ್ಮದೇ ಪುಟಕ್ಕೆ ನೀವು ಅಂಟಿಸುವ ಶೈಲಿಯು ನೀವು ಎಲ್ಲಿಂದ ಒದಗಿಸಿದರೂ ಕೆಲಸ ಮಾಡುತ್ತಲೇ ಇರುತ್ತದೆ. ನೀವು ಈ ಹೋಸ್ಟ್ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಲು ಇಷ್ಟಪಡದಿದ್ದರೆ ಅವುಗಳನ್ನು protomaps.github.io/basemaps-assets ಕಡೆಗೆ ತೋರಿಸಿ.
ಬದಲಾಯಿಸುವ ಮೊದಲು ಪರಿಶೀಲಿಸಬೇಕಾದ ಒಂದು ವಿಷಯ. ಈ ಆರ್ಕೈವ್ Protomaps schema v3 ಆಗಿದೆ. ಬೇರೆ ಸ್ಕೀಮಾಗಾಗಿ ಬರೆದ ಶೈಲಿಯು ಲೋಡ್ ಆಗುತ್ತದೆ ಆದರೆ ಏನನ್ನೂ ಚಿತ್ರಿಸುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಮೂಲ ಪದರದ ಹೆಸರುಗಳು ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ. ಒಂಬತ್ತು ಪದರದ ಹೆಸರುಗಳನ್ನು ಕೆಳಗೆ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದೆ, ಜೊತೆಗೆ ನೀವು ನಕಲಿಸಿಕೊಳ್ಳಬಹುದಾದ ಸಿದ್ಧ v3 ಶೈಲಿಯೂ ಇದೆ.
ನಾಲ್ಕು. ಫಾಂಟ್ಗಳು, ಸ್ಪ್ರೈಟ್ಗಳು ಮತ್ತು ಲೈಬ್ರರಿಗಳು
ಒಂದು ನಕ್ಷೆಯೆಂದರೆ ಟೈಲ್ಗಳು, ಪಠ್ಯಕ್ಕಾಗಿ ಒಂದು glyphs URL, ಐಚ್ಛಿಕವಾಗಿ ಐಕಾನ್ಗಳಿಗಾಗಿ ಒಂದು sprite URL, ಮತ್ತು ಇವೆಲ್ಲವನ್ನೂ ಚಿತ್ರಿಸುವ ಲೈಬ್ರರಿಗಳು. ಪ್ರತಿಯೊಂದೂ ನಿರೀಕ್ಷಿಸುವ ಪಾತ್ಗಳಲ್ಲಿ ಇವೆಲ್ಲವೂ ಇಲ್ಲಿವೆ, ಆದ್ದರಿಂದ ನೀವು ಬಯಸಿದರೆ ಸಂಪೂರ್ಣ ನಕ್ಷೆಯು ಒಂದೇ ಹೋಸ್ಟ್ನೇಮ್ನಿಂದ ಬರಬಹುದು.
| ಏನು | ಇಲ್ಲಿನ URL | ಪರವಾನಗಿ |
|---|
MapLibre ಮತ್ತು PMTiles ಫೈಲ್ಗಳು jsDelivr ನಲ್ಲಿ ಮತ್ತು ಇಲ್ಲಿ ಲಭ್ಯವಿವೆ. ಎರಡರಲ್ಲಿ ಯಾವುದೇ URL ಆದರೂ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
ಕೊನೆಯ ಸಾಲನ್ನು ಈ ಪುಟವು ಬಳಸುವುದಿಲ್ಲ. ಅದು Leaflet ವೆಕ್ಟರ್ ರೆಂಡರರ್ ಆಗಿದ್ದು, ಒಂದೇ ಸ್ಕ್ರಿಪ್ಟ್ ಟ್ಯಾಗ್ ಮೂಲಕ ಬದಲಾಯಿಸಲು ಅನುಕೂಲವಾಗುವಂತೆ ಇಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಗಿದೆ. Leaflet ಮಾತ್ರ ತನ್ನದೇ CDN ನಲ್ಲಿ ಉಳಿಯುತ್ತದೆ.
ಎರಡು ಫಾಂಟ್ ಸ್ಟ್ಯಾಕ್ಗಳು, Noto Sans Regular ಮತ್ತು Noto Sans Medium, MapLibre ಕೇಳುವ 256 ಶ್ರೇಣಿಗಳಾಗಿ, ಒಮ್ಮೆಗೆ 256 ಕೋಡ್ಪಾಯಿಂಟ್ಗಳಂತೆ ವಿಭಜಿಸಲಾಗಿದೆ. ಕೇವಲ ಲ್ಯಾಟಿನ್ ಮಾತ್ರವಲ್ಲದೆ ಎಲ್ಲಾ 256 ಶ್ರೇಣಿಗಳನ್ನೂ ಪ್ರಕಟಿಸಲಾಗಿದೆ: Protomaps ಸ್ಥಳಗಳನ್ನು ಅವುಗಳ ಸ್ಥಳೀಯ ಹೆಸರಿನಿಂದ ಗುರುತಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಟೋಕಿಯೊ ಅಥವಾ ಕೈರೋಗೆ ಹತ್ತಾರು ಸಾವಿರದ ಶ್ರೇಣಿಗಳು ಬೇಕಾಗುತ್ತವೆ. ಇಂಗ್ಲಿಷ್ ನಕ್ಷೆ ಬಳಸುವುದನ್ನು ಮಾತ್ರ ಪ್ರಕಟಿಸಿದರೆ ಆ ಹೆಸರುಗಳು ಯಾವುದೇ ದೋಷ ಸಂದೇಶವಿಲ್ಲದೆ ಮಾಯವಾಗುತ್ತವೆ.
ಪ್ರತಿ ಅಪ್ಸ್ಟ್ರೀಮ್ ಫ್ಲೇವರ್ಗೆ ಒಂದರಂತೆ, 1x ಮತ್ತು 2x ನಲ್ಲಿ ಐದು ಸ್ಪ್ರೈಟ್ ಶೀಟ್ಗಳಿವೆ. ಕೆಳಗಿನ ಶೈಲಿಗಳು ಅವುಗಳಿಂದ ಐಕಾನ್ಗಳನ್ನು ಚಿತ್ರಿಸುತ್ತವೆ, ಆದ್ದರಿಂದ ಇವನ್ನು ತರಿಸಿಕೊಳ್ಳಲಾಗುತ್ತದೆ. ನಿಮ್ಮದೇ ಶೈಲಿಯಲ್ಲಿ ಪಟ್ಟಣದ ಗುರುತುಗಳು, ಹೆದ್ದಾರಿ ಶೀಲ್ಡ್ಗಳು ಅಥವಾ ಸ್ಥಳದ ಬಿಂದುಗಳು ಬೇಕಿದ್ದರೆ, ನಿಮ್ಮ ಫ್ಲೇವರ್ಗೆ ತಕ್ಕದಾದ್ದರ ಕಡೆಗೆ sprite ಅನ್ನು ತೋರಿಸಿ. ಒಂದು ಶೀಟ್ನಲ್ಲಿರುವ ಐಕಾನ್ ಹೆಸರುಗಳನ್ನು ಅದರ light.json ನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಲಾಗಿದೆ.
ನಕ್ಷೆಯು ಏನನ್ನು ಚಿತ್ರಿಸುತ್ತದೆ, ಮತ್ತು ಪ್ರತಿಯೊಂದೂ ಎಲ್ಲಿಂದ ಬರುತ್ತದೆ
ಪ್ರತಿಯೊಂದು ಪದರವೂ ಈ ಆರ್ಕೈವ್ನಲ್ಲಿರುವ ಒಂಬತ್ತು ಮೂಲ ಪದರಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ, ಆದ್ದರಿಂದ ಇಲ್ಲಿ ಯಾವುದಕ್ಕೂ ಎರಡನೇ ಆರ್ಕೈವ್ ಬೇಕಿಲ್ಲ. ಅವುಗಳಲ್ಲಿ ಎರಡನ್ನು ವಿಶೇಷವಾಗಿ ಹೇಳಬೇಕು, ಏಕೆಂದರೆ ಅವು ಇಲ್ಲದಿದ್ದರೂ ಏನೋ ಕಾಣೆಯಾದಂತೆ ಕಾಣಿಸುತ್ತವೆ:
| ಪದರ | ಎಲ್ಲಿಂದ ಬರುತ್ತದೆ | ಈ ಬಿಲ್ಡ್ನಲ್ಲಿದೆಯೇ? |
|---|---|---|
| ಆಕಾರಗಳು, ರಸ್ತೆಗಳು, ಕಟ್ಟಡಗಳು, ನೀರು, ಭೂಮಿ | earth, landcover, landuse, water, roads, buildings | ಹೌದು |
| ಸ್ಥಳ, ರಸ್ತೆ ಮತ್ತು ನೀರಿನ ಹೆಸರುಗಳು | ಅದೇ ಪದರಗಳಲ್ಲಿರುವ name ಫೀಲ್ಡ್ | ಹೌದು |
| ಸ್ಥಳದ ಬಿಂದು ಐಕಾನ್ಗಳು, ಪಟ್ಟಣದ ಗುರುತುಗಳು | pois.kind, places, ಜೊತೆಗೆ ಸ್ಪ್ರೈಟ್ | ಹೌದು |
| ಮಾರ್ಗದ ಶೀಲ್ಡ್ಗಳು | roads.shield_text | ಇಲ್ಲ. ಈಗ ಒದಗಿಸಲಾಗುತ್ತಿರುವ ಬಿಲ್ಡ್ನಲ್ಲಿ ಆ ಫೀಲ್ಡ್ ಇಲ್ಲ |
| ಮನೆ ಸಂಖ್ಯೆಗಳು | buildings.kind=address ಮತ್ತು buildings.addr_housenumber | ಇಲ್ಲ, ಅದೇ ಕಾರಣ |
ಪ್ರತ್ಯೇಕ ವಿಳಾಸ ಆರ್ಕೈವ್ ಇಲ್ಲ, ಮತ್ತು ತರಿಸಿಕೊಳ್ಳಲು ಯಾವುದೇ ವಿಳಾಸ ಪದರವೂ ಇಲ್ಲ. ಅಪ್ಸ್ಟ್ರೀಮ್ ಯೋಜನೆಯು ವಿಳಾಸ ಬಿಂದುಗಳನ್ನು ನೇರವಾಗಿ ಒಳಗೆಯೇ buildings ಪದರದಲ್ಲಿ, kind=address ಮತ್ತು addr_housenumber ಹೊಂದಿರುವ ಫೀಚರ್ಗಳಾಗಿ ಇರಿಸುತ್ತದೆ. ಈ ನಕ್ಷೆ ಒದಗಿಸುತ್ತಿರುವ ಬಿಲ್ಡ್ಗಿಂತ ನಂತರದ Protomaps ಬಿಲ್ಡ್ನಲ್ಲಿ ಆ ಫೀಲ್ಡ್ ಬಂದಿದೆ; ಆದ್ದರಿಂದ ಮನೆ ಸಂಖ್ಯೆಯ ಪದರವನ್ನು ಈಗಾಗಲೇ ರಚಿಸಲಾಗಿದ್ದು ಮುಂದಿನ ಮಾಸಿಕ ನವೀಕರಣದಲ್ಲಿ ಅವು ಬಂದಾಗ ತಾನಾಗಿಯೇ ಆನ್ ಆಗುತ್ತದೆ. ಶೀಲ್ಡ್ ಪಠ್ಯದ ವಿಷಯವೂ ಅಷ್ಟೇ: ಪ್ರಸ್ತುತ ಬಿಲ್ಡ್ನಲ್ಲಿ shield_text_length ಮಾತ್ರ ಇದೆ, ಅದು ಮಾರ್ಗ ಸಂಖ್ಯೆಯಲ್ಲಿ ಎಷ್ಟು ಅಕ್ಷರಗಳಿವೆ ಎಂದು ಹೇಳುತ್ತದೆಯೇ ಹೊರತು ಅವು ಯಾವುವು ಎಂದಲ್ಲ, ಆದ್ದರಿಂದ ಅದರಿಂದ ಚಿತ್ರಿಸಿದ ಶೀಲ್ಡ್ ಪ್ರತಿ ಹೆದ್ದಾರಿಯಲ್ಲೂ ಖಾಲಿ ಆಕಾರವಾಗಿ ಕಾಣಿಸುತ್ತದೆ.
ನೀವೇ ಒಂದು ಪದರವನ್ನು ಬರೆಯುವುದು ಮತ್ತು ಅದಕ್ಕೆ ಬಣ್ಣ ಹಾಕುವುದು
ಒಂದು ಪದರವೆಂದರೆ ಒಂದು ಫಿಲ್ಟರ್, ಒಂದು ಜೂಮ್, ಒಂದು ಆಕಾರ ಮತ್ತು ಒಂದು ಬಣ್ಣ. ಫಿಲ್ಟರ್ನಲ್ಲಿರುವ ಎರಡು ವಿಷಯಗಳು ಎಲ್ಲರನ್ನೂ ಎಡವಿಸುತ್ತವೆ, ಮತ್ತು ಎರಡೂ ಯಾವುದೇ ದೋಷ ಸಂದೇಶವಿಲ್ಲದೆ ವಿಫಲವಾಗುತ್ತವೆ:
kindಎಂಬುದು ಸ್ಥೂಲ ಹೆಸರು. ರಸ್ತೆಗಳಿಗಾಗಿ ಅದುhighway,major_road,minor_road,path,railಇವುಗಳಲ್ಲಿ ಒಂದಾಗಿರುತ್ತದೆ. ಅಪ್ಸ್ಟ್ರೀಮ್ ದಾಖಲಾತಿಯಲ್ಲಿರುವ ಹೆಸರುಗಳು —motorway,primary,residential— ಇವುkind_detailಮೌಲ್ಯಗಳಾಗಿವೆ, ಮತ್ತು ಅವುಗಳ ವಿರುದ್ಧkindಅನ್ನು ಫಿಲ್ಟರ್ ಮಾಡುವ ಪದರವು ಏನನ್ನೂ ಚಿತ್ರಿಸುವುದಿಲ್ಲ ಮತ್ತು ಆ ಬಗ್ಗೆ ಎಲ್ಲೂ ಹೇಳುವುದಿಲ್ಲ.- ಯಾವುದೇ ಪದರವನ್ನು ಅದರ ಸ್ವಂತ
minzoomಗಿಂತ ಕೆಳಗೆ ಚಿತ್ರಿಸಲಾಗುವುದಿಲ್ಲ. ಆರ್ಕೈವ್ z15 ಕ್ಕೆ ನಿಲ್ಲುತ್ತದೆ, ಆದ್ದರಿಂದ minzoom 16 ಇರುವ ಪದರವು ಎಂದಿಗೂ ಚಿತ್ರಿಸಲ್ಪಡುವುದಿಲ್ಲ. ಹೆಚ್ಚಿನ ಫೀಚರ್ಗಳು ತಮ್ಮದೇ ಆದmin_zoomಅನ್ನು ಸಹ ಹೊಂದಿರುತ್ತವೆ, ಅದು ದತ್ತಾಂಶದ ಪ್ರಕಾರ ಅವುಗಳನ್ನು ತೋರಿಸಲು ಸೂಕ್ತವಾದ ಜೂಮ್ ಆಗಿದೆ, ಮತ್ತು ಇಲ್ಲಿನ ಶೈಲಿಗಳು ಅದನ್ನೂ ಪರೀಕ್ಷಿಸುತ್ತವೆ.
ಆದ್ದರಿಂದ ಒಂದು ರಸ್ತೆ, ಅದರ ಹೆಸರು, ಮತ್ತು ರೇಖೆಯನ್ನು ಆಫ್ ಮಾಡಲು ಒಂದು ಟಾಗಲ್:
{
"id": "road-major",
"type": "line",
"source": "protomaps",
"source-layer": "roads", // one of the nine
"minzoom": 4, // not drawn below this
"filter": ["==", ["get", "kind"], "major_road"],
"layout": {
"line-cap": "round",
"visibility": "visible" // "none" to hide it
},
"paint": {
"line-color": "#f7c44d", // any CSS colour
"line-width": ["interpolate", ["linear"], ["zoom"], 4, 1.7, 12, 6]
}
}
ಹೆಸರು ಎಂಬುದು name ಫೀಲ್ಡ್ ಅನ್ನು ಓದುವ ಸಿಂಬಲ್ ಪದರವಾಗಿದ್ದು, ಅದರ ಹಿಂದೆ ಹ್ಯಾಲೋ ಇರಬಹುದು ಅಥವಾ ಏನೂ ಇಲ್ಲದಿರಬಹುದು. ಕಾಣೆಯಾದ ಗ್ಲಿಫ್ ಬಗ್ಗೆ ಯಾವುದೇ ದೋಷ ಕಾಣಿಸುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ನೀವು ಕೇಳುವ ಫಾಂಟ್ ಸ್ಟ್ಯಾಕ್ ಈ ಹೋಸ್ಟ್ನಲ್ಲಿರುವ ಎರಡರಲ್ಲಿ ಒಂದಾಗಿರಬೇಕು:
{
"id": "road-label-major",
"type": "symbol",
"source": "protomaps",
"source-layer": "roads",
"minzoom": 11,
"layout": {
"text-field": ["coalesce", ["get", "name:en"], ["get", "name"]],
"text-font": ["Noto Sans Medium"], // or Noto Sans Regular
"text-size": 10,
"symbol-placement": "line" // follow the road
},
"paint": {
"text-color": "#2b2a26",
"text-halo-color": "#ffffff",
"text-halo-width": 1.1
}
}
ಏನನ್ನೂ ಚಿತ್ರಿಸದ ಪದರವು ದೋಷವಲ್ಲ, ಮತ್ತು ಯಾವ ಪರಿಶೀಲನೆ ವಿಫಲವಾಯಿತು ಎಂದು MapLibre ಹೇಳುವುದಿಲ್ಲ. ನಿಮ್ಮ ಪದರ ಖಾಲಿಯಾಗಿದ್ದರೆ, ಈ ಕ್ರಮದಲ್ಲಿ ಪರಿಶೀಲಿಸಿ: ಫೀಲ್ಡ್ ಹೆಸರು, ಪದರದ minzoom, ಫಾಂಟ್ ಸ್ಟ್ಯಾಕ್, ನಂತರ ಶೀಟ್ನ ಸ್ವಂತ light.json ನಲ್ಲಿರುವ ಐಕಾನ್ ಹೆಸರು.
ನಿಮ್ಮಲ್ಲಿರುವ ಶೈಲಿಯು ತನ್ನ ಗ್ಲಿಫ್ಗಳಿಗಾಗಿ demotiles.maplibre.org ಅನ್ನು ತೋರಿಸುತ್ತಿದ್ದರೆ, ಆ ಹೋಸ್ಟ್ನೇಮ್ ಅನ್ನು ಬದಲಾಯಿಸುವುದಷ್ಟೇ ಮಾಡಬೇಕಾದ ಬದಲಾವಣೆ. ಪಾತ್ ಅನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿಯೇ ಒಂದೇ ರೀತಿ ಇರಿಸಲಾಗಿದೆ.
"glyphs": "https://tiles.jasontally.com/font/{fontstack}/{range}.pbf",
"sprite": "https://tiles.jasontally.com/sprites/v4/light"
// before, in a style you already have
- "glyphs": "https://demotiles.maplibre.org/font/{fontstack}/{range}.pbf",
+ "glyphs": "https://tiles.jasontally.com/font/{fontstack}/{range}.pbf",
ಯಾವುದೇ ಶೈಲಿಯು ಮೇಲಿನ ಎರಡನ್ನು ಬಿಟ್ಟು ಬೇರೆ ಫಾಂಟ್ ಸ್ಟ್ಯಾಕ್ ಕೇಳಿದರೆ, ಅದಕ್ಕೆ ಏನನ್ನೂ ಚಿತ್ರಿಸಲಾಗುವುದಿಲ್ಲ. Protomaps ನ ಸ್ವಂತ ಶೈಲಿಗಳು ದಪ್ಪ ಅಕ್ಷರಕ್ಕಾಗಿ Noto Sans Medium ಅನ್ನು ಬಳಸುತ್ತವೆ; ಈ ಸೆಟ್ನಲ್ಲಿ Noto Sans Bold ಇಲ್ಲ, ಅದಕ್ಕಾಗಿಯೇ ಅದನ್ನು ಕೇಳುವ ಶೈಲಿಯು ಸದ್ದಿಲ್ಲದೆ ಎಲ್ಲಾ ಹೆಸರುಗಳನ್ನೂ ಕಳೆದುಕೊಳ್ಳುತ್ತದೆ.
ಯಾವ ಹೋಸ್ಟ್ ವೇಗವಾಗಿದೆ, ಮತ್ತು ಅದರ ಬಗ್ಗೆ ಏನು ನಿರ್ಧರಿಸಲಾಯಿತು. ಊಹಿಸುವ ಬದಲು ಅಳೆಯಲಾಗಿದೆ: ಒಂದೇ ಸಂಪರ್ಕದಲ್ಲಿ ಒಂದಾದ ನಂತರ ಒಂದರಂತೆ ಪರ್ಯಾಯ ವಿನಂತಿಗಳು, ಮೊದಲ ಮೂರು ಮಾದರಿಗಳನ್ನು ಕೈಬಿಟ್ಟು, ಮೊದಲ ಬೈಟ್ ಬರುವ ಸಮಯವನ್ನು ವರ್ಗಾವಣೆ ಸಮಯದಿಂದ ಪ್ರತ್ಯೇಕಿಸಲಾಯಿತು. ಆ ಪರೀಕ್ಷೆಯಲ್ಲಿ ಈ ಪ್ರತಿಯೊಂದು ಫೈಲ್ಗೂ CDN 10 ರಿಂದ 45 ms ಬೇಗನೆ ಉತ್ತರಿಸಿತು; ಇದು 15% ನಿಯಮವನ್ನು ಮತ್ತು ಮಾದರಿಗಳ ಅಂತರವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ದಾಟುತ್ತದೆ. ಆ ಕಾರಣಕ್ಕಾಗಿ ಲೈಬ್ರರಿಗಳು jsDelivr ನಿಂದ ಲೋಡ್ ಆಗುತ್ತವೆ.
ಅದೇ ಅಳತೆಯು CDN ಸುಮಾರು 10 ms ಬೇಗ ಉತ್ತರಿಸುತ್ತದೆ ಎಂದು ಹೇಳಿದರೂ ಸಹ ಫಾಂಟ್ಗಳು ಮತ್ತು ಸ್ಪ್ರೈಟ್ಗಳನ್ನು ಇಲ್ಲಿಂದಲೇ ಒದಗಿಸಲಾಗುತ್ತದೆ. ಅದು ಅಳತೆಯಲ್ಲ, ಒಂದು ನಿರ್ಧಾರ. ಒಂದೇ ಹೋಸ್ಟ್ನೇಮ್ನಿಂದ ಬರುವ ನಕ್ಷೆಯು ಬೇರೊಬ್ಬರ ಸರ್ವರ್ ಸ್ಥಗಿತಗೊಂಡಾಗ ಕೆಟ್ಟುಹೋಗುವುದಿಲ್ಲ, ಮತ್ತು ಗ್ಲಿಫ್ ಸರ್ವರ್ ಸ್ಥಗಿತಗೊಂಡರೆ ನಕ್ಷೆಯಲ್ಲಿ ಯಾವುದೇ ಹೆಸರುಗಳಿರುವುದಿಲ್ಲ. ನಿಮಗೆ ಆ 10 ms ಉಳಿತಾಯವೇ ಬೇಕಿದ್ದರೆ, glyphs ಅನ್ನು protomaps.github.io/basemaps-assets/fonts ಕಡೆಗೆ ತೋರಿಸಿ, ಅದು ಅದೇ ಪಾತ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಇವು ಒಂದು ನಗರದ ಒಬ್ಬ ಓದುಗನ ಸಂಖ್ಯೆಗಳು, ಮತ್ತು ಹೋಲಿಕೆಯನ್ನು ಮತ್ತೆ ನಡೆಸಲು ಒಂದೇ ಕಮಾಂಡ್ ಸಾಕು.
ಐದು. Leaflet ಬಗ್ಗೆ
Leaflet ನ L.tileLayer ಚಿತ್ರಗಳನ್ನು ಬಿಡಿಸುತ್ತದೆ; ಇವು ವೆಕ್ಟರ್ ಟೈಲ್ಗಳು. ಆದರೂ Leaflet ನಕ್ಷೆಯು ಇವನ್ನು ಬಳಸಬಹುದು, ಮತ್ತು ಎರಡೂ ವಿಧಾನಗಳಲ್ಲಿ ನಿಮ್ಮ ಮಾರ್ಕರ್ಗಳು, ಪಾಪ್ಅಪ್ಗಳು ಮತ್ತು ನಿಯಂತ್ರಣಗಳು ಹಾಗೆಯೇ ಉಳಿಯುತ್ತವೆ. ಎರಡೂ ಬದಲಾವಣೆ ವಿಧಾನಗಳು OpenStreetMap ಟೈಲ್ಗಳಿಂದ ಸ್ಥಳಾಂತರ ವಿಭಾಗದಲ್ಲಿವೆ.
ಆರು. PMTiles ಲೈಬ್ರರಿಯೊಂದಿಗೆ ಆರ್ಕೈವ್ ಅನ್ನು ಓದಿ
ನಕ್ಷೆ ಇಲ್ಲ, ಕೇವಲ ದತ್ತಾಂಶ. ಸ್ಕ್ರಿಪ್ಟ್ಗಳು, ಪರೀಕ್ಷೆಗಳು ಮತ್ತು ಚಿತ್ರವಲ್ಲದ ಯಾವುದಕ್ಕಾದರೂ ಉಪಯುಕ್ತ.
import { PMTiles, FetchSource } from "pmtiles";
const archive = new PMTiles(new FetchSource("https://tiles.jasontally.com/basemap.pmtiles"));
const header = await archive.getHeader();
console.log(header.minZoom, header.maxZoom); // 0 15
console.log(header.numAddressedTiles); // 1431655765
const metadata = await archive.getMetadata();
console.log(metadata.name); // "Protomaps Basemap"
const tile = await archive.getZxy(3, 4, 2); // z, x, y
console.log(tile.data.byteLength);
ಎರಡು ಕ್ಲಾಸ್ಗಳನ್ನು ಗಮನಿಸಿ. FetchSource ಎಂಬುದು HTTP ಮೂಲಕ ಬೈಟ್ ಓದುವ ಸಾಧನ, ಮತ್ತು PMTiles ಎಂಬುದು ಅದರ ಮೇಲೆ ಕುಳಿತು ಫಾರ್ಮ್ಯಾಟ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ರೀಡರ್. FileSource ಎಂಬುದು FetchSource ನ ಸ್ಥಳೀಯ-ಫೈಲ್ ಸಮಾನರೂಪ; ಅದಕ್ಕೆ URL ಸ್ಟ್ರಿಂಗ್ ನೀಡಿದರೆ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ.
ಈ ಆರ್ಕೈವ್ ಒಂದು ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಆಗಿದೆಯೇ ಹೊರತು ನೇರ ಫೀಡ್ ಅಲ್ಲ. ಸಮಯದ ವಿವರಗಳು ಇದು ಎಷ್ಟು ಹೊಸದು? ವಿಭಾಗದಲ್ಲಿವೆ.
OpenStreetMap ಟೈಲ್ಗಳಿಂದ ಸ್ಥಳಾಂತರ
ಟೈಲ್ ಬಳಕೆ ನೀತಿಯ ನಿರ್ಬಂಧ, 403 ದೋಷ, ಮತ್ತು ಅವುಗಳ ಬಗ್ಗೆ ಏನು ಮಾಡಬೇಕು. ಯಾವುದೇ ಕೀ ಇಲ್ಲ, ಕೋಟಾ ಇಲ್ಲ.
ನಕ್ಷೆಯು ನಿರ್ಬಂಧದ ಸಂದೇಶವನ್ನು ಏಕೆ ತೋರಿಸುತ್ತದೆ
App is not following the tile usage policy of OpenStreetMap’s volunteer-run servers
General block: app is not following the tile usage policy of openstreetmap volunteer-run servers
403 Forbidden — tile.openstreetmap.org
ಟೈಲ್ ಬಳಕೆ ನೀತಿಯ ಅಡಿಯಲ್ಲಿ ಟೈಲ್ ಸರ್ವರ್ಗಳು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿಯೇ ನಕ್ಷೆಯ ಬದಲು ಆ ಚಿತ್ರವನ್ನು ಕಳುಹಿಸಿವೆ. ಇದು ತಾಂತ್ರಿಕ ದೋಷವಲ್ಲ, ಮತ್ತು URL ಅನ್ನು ಸರಿಪಡಿಸುವುದರಿಂದ ಇದು ನಿವಾರಣೆಯಾಗುವುದಿಲ್ಲ.
ಜನರು ಮೊದಲು ಪ್ರಯತ್ನಿಸುವುದು:
a/b/cಅನ್ನು ಮುಖ್ಯ ಹೋಸ್ಟ್ಗೆ ಬದಲಾಯಿಸುವುದರಿಂದ ನಿಮ್ಮ ನಿರ್ಬಂಧ ತೆರವಾಗುವುದಿಲ್ಲ. ಮುಖ್ಯ URL ಬಳಸುವುದು ಕಡ್ಡಾಯ, ಆದರೆ ನಿರ್ಬಂಧವು ಕಂಡುಬಂದ ಆ್ಯಪ್ ಅಥವಾ Referer ಗೆ ಅಂಟಿಕೊಂಡಿರುತ್ತದೆಯೇ ಹೊರತು ಹೋಸ್ಟ್ನೇಮ್ಗಲ್ಲ.- ಮತ್ತೆ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುವುದು ಪರಿಸ್ಥಿತಿಯನ್ನು ಇನ್ನಷ್ಟು ಹದಗೆಡಿಸುತ್ತದೆ. ವಿನಂತಿಗಳ ಪ್ರಮಾಣವೂ ನಿರ್ಬಂಧಕ್ಕೆ ಒಂದು ಕಾರಣವಾಗಿದೆ.
- ಡಿಸ್ಕ್ನಿಂದ ತೆರೆದ ಪುಟವನ್ನು ಯಾವುದೇ ಹೆಡರ್ ತಂತ್ರವೂ ಉಳಿಸಲಾರದು.
file://ಯಾವುದೇRefererಅನ್ನು ಕಳುಹಿಸುವುದಿಲ್ಲ. ಅದರ ಬದಲುX-Requested-Withಕಳುಹಿಸಿದರೆ ಪ್ರತಿ ಟೈಲ್ಗೂ CORS ಪ್ರೀಫ್ಲೈಟ್ ಬೇಕಾಗುತ್ತದೆ, ಮತ್ತು ಟೈಲ್ ಸರ್ವರ್ಗಳು ಆ ಪ್ರೀಫ್ಲೈಟ್ ಅನ್ನೂ ನಿರಾಕರಿಸುತ್ತವೆ. Firefox ಮತ್ತು Chromium ಯಾವ ಹೆಡರ್ಗಳನ್ನು ಕಳುಹಿಸುತ್ತವೆ ಎಂಬುದರಲ್ಲಿ ಭಿನ್ನವಾಗಿವೆ; ಆದರೆ ನಿಯಮ ಎರಡಕ್ಕೂ ಒಂದೇ. localhostನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ, ಲೈವ್ ಸೈಟ್ನಲ್ಲಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆಯೇ? ಅದಕ್ಕೆ ಕಾರಣ ಆರಿಜಿನ್. ನಿರ್ಬಂಧಕ್ಕೊಳಗಾಗುವುದು ನಿಮ್ಮ ಡೊಮೇನ್ನ Referer ಆಗಿದ್ದು,localhostಬೇರೆಯದನ್ನು ಕಳುಹಿಸುತ್ತದೆ.
ಕಚೇರಿಗಳು, ಶಾಲೆಗಳು, VPN ಗಳು ಮತ್ತು ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ಗಳು ಒಂದೇ ವಿಳಾಸವನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ, ಮತ್ತು ನಿರ್ಬಂಧಗಳು ಆ್ಯಪ್ಗಳಂತೆಯೇ ವಿಳಾಸಗಳಿಗೂ ಅನ್ವಯಿಸುತ್ತವೆ. ನಿಮ್ಮ ಕಡೆಯಿಂದ ನಿಮಗೆ ಯಾವ ನಿರ್ಬಂಧ ಬಿದ್ದಿದೆ ಎಂದು ಹೇಳಲು ಸಾಧ್ಯವಿಲ್ಲ.
ಆದ್ದರಿಂದ ಆ ಸರ್ವರ್ಗಳನ್ನು ಕೇಳುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಅವುಗಳಿಂದ ಹೊರಬರಲು ಮೂರು ದಾರಿಗಳಿವೆ.
Leaflet ಅನ್ನು ಹಾಗೆಯೇ ಉಳಿಸಿಕೊಳ್ಳಿ
protomaps-leaflet ಲೈಬ್ರರಿಯು Leaflet ನಲ್ಲಿ ವೆಕ್ಟರ್ ಟೈಲ್ಗಳನ್ನು ಚಿತ್ರಿಸುತ್ತದೆ. ಇದು ತಾನೇ ಆರ್ಕೈವ್ ಅನ್ನು ಓದಿ ಸಾಮಾನ್ಯ ಪದರವಾಗಿ ಸೇರಿಕೊಳ್ಳುತ್ತದೆ, ಆದ್ದರಿಂದ ಮಾರ್ಕರ್ಗಳು, ಪಾಪ್ಅಪ್ಗಳು, GeoJSON ಮತ್ತು ನಿಯಂತ್ರಣಗಳು ಇರುವಲ್ಲಿಯೇ ಉಳಿಯುತ್ತವೆ. ಈ ಆರ್ಕೈವ್ನೊಂದಿಗೆ ಪರೀಕ್ಷಿಸಲಾದ ಒಂದು ಪ್ರತಿ ಇಲ್ಲಿದೆ: https://tiles.jasontally.com/vendor/protomaps-leaflet.js.
ಮೊದಲು:
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css">
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script>
const map = L.map("map").setView([48.85, 2.35], 12);
L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", {
maxZoom: 19,
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
</script>
ನಂತರ:
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css">
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
+ <script src="https://tiles.jasontally.com/vendor/protomaps-leaflet.js"></script>
<script>
const map = L.map("map").setView([48.85, 2.35], 12);
- L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { ... }).addTo(map);
+ protomapsL.leafletLayer({
+ url: "https://tiles.jasontally.com/basemap.pmtiles",
+ flavor: "light",
+ lang: "en"
+ }).addTo(map);
</script>
flavorಎಂಬುದುlight,dark,white,grayscaleಅಥವಾblackಆಗಿರುತ್ತದೆ. ಅವು ಆ ಲೈಬ್ರರಿಯ ಥೀಮ್ಗಳೇ ಹೊರತು ಮೇಲಿನ ಶೈಲಿಗಳಲ್ಲ, ಆದ್ದರಿಂದ ಬಣ್ಣಗಳು ನಿಖರವಾಗಿ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ.- ಲೇಬಲ್ಗಳು ಸಿಸ್ಟಮ್ ಫಾಂಟ್ನಲ್ಲಿರುವ ಕ್ಯಾನ್ವಾಸ್ ಪಠ್ಯಗಳಾಗಿವೆ. ಯಾವುದೇ ಗ್ಲಿಫ್ URL ಇಲ್ಲ, 404 ಆಗಬಹುದಾದ ಯಾವುದೇ ಫಾಂಟ್ ಇಲ್ಲ.
- z15 ಅತ್ಯಂತ ಆಳವಾದ ಟೈಲ್ ಆಗಿದೆ. ಪದರವು ಅದನ್ನು ದಾಟಿ ಓವರ್ಜೂಮ್ ಮಾಡುತ್ತದೆ, ಮತ್ತು
maxDataZoom: 15ಈಗಾಗಲೇ ಡೀಫಾಲ್ಟ್ ಆಗಿದೆ.
protomaps-leaflet ಅಪ್ಸ್ಟ್ರೀಮ್ನಲ್ಲಿ ನಿರ್ವಹಣಾ ಮೋಡ್ನಲ್ಲಿದೆ: ಕೇವಲ ದೋಷ ನಿವಾರಣೆಗಳು, ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳಿಲ್ಲ. ಈಗಾಗಲೇ ಇರುವ Leaflet ಆ್ಯಪ್ಗೆ ಇದು ಸಾಕು. ಹೊಸ ಕೆಲಸವನ್ನು MapLibre GL ನಲ್ಲಿ ಪ್ರಾರಂಭಿಸಬೇಕು.
Leaflet ಉಳಿಸಿಕೊಳ್ಳಿ, MapLibre ಮೂಲಕ ರೆಂಡರ್ ಮಾಡಿ
@maplibre/maplibre-gl-leaflet ಲೈಬ್ರರಿಯು Leaflet ನ ಟೈಲ್ ಪೇನ್ನಲ್ಲಿ MapLibre ನಕ್ಷೆಯನ್ನು ಇರಿಸುತ್ತದೆ. Leaflet ನಲ್ಲಿಯೇ ಉಳಿಯುವ ಆ್ಯಪ್ನಲ್ಲಿ ನಿಮಗೆ ಮೇಲಿನ ಶೈಲಿಗಳಲ್ಲಿ ಒಂದು ಬೇಕಿದ್ದರೆ, ಅಥವಾ ಟೆರೇನ್ ಮತ್ತು ಹಿಲ್ಶೇಡ್ ಬೇಕಿದ್ದರೆ ಇದನ್ನು ಬಳಸಿ.
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css">
<link rel="stylesheet" href="https://tiles.jasontally.com/vendor/maplibre-gl.css">
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script src="https://tiles.jasontally.com/vendor/maplibre-gl.js"></script>
<script src="https://tiles.jasontally.com/vendor/pmtiles.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-leaflet@0.1.4/dist/leaflet-maplibre-gl.js"></script>
<script>
// The style's source is pmtiles://, so MapLibre needs the protocol first.
maplibregl.addProtocol("pmtiles", new pmtiles.Protocol().tile);
const map = L.map("map", { minZoom: 1 }).setView([48.85, 2.35], 12);
const gl = L.maplibreGL({
style: "https://tiles.jasontally.com/styles/light.json"
}).addTo(map);
// gl.getMaplibreMap() is the MapLibre map, for sources and layers.
</script>
- ಮೊದಲು ಪ್ರೊಟೊಕಾಲ್ ಅನ್ನು ನೋಂದಾಯಿಸಿ.
addProtocolಸಾಲು ಇಲ್ಲದಿದ್ದರೆ ಕನ್ಸೋಲ್URL scheme "pmtiles" is not supportedಎಂದು ಹೇಳುತ್ತದೆ ಮತ್ತು ನಕ್ಷೆ ಖಾಲಿಯಾಗಿಯೇ ಉಳಿಯುತ್ತದೆ. - MapLibre ಜೂಮ್ ಮಟ್ಟವು Leaflet ಗಿಂತ ಒಂದು ಹಂತ ಕೆಳಗೆ ಚಿತ್ರಿಸುತ್ತದೆ. ಅದರ ಟೈಲ್ಗಳು Leaflet ನ 256 ಕ್ಕೆ ಹೋಲಿಸಿದರೆ 512 px ಆಗಿರುತ್ತವೆ, ಆದ್ದರಿಂದ
minzoom12 ಹೊಂದಿರುವ ಪದರವು Leaflet z13 ತಲುಪಿದಾಗ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ. - Leaflet ಇನ್ನೂ ಮೇಲ್ಭಾಗದಲ್ಲಿಯೇ ಚಿತ್ರಿಸುತ್ತದೆ. ಕ್ಯಾನ್ವಾಸ್ ಟೈಲ್ ಪೇನ್ನಲ್ಲಿ ಕುಳಿತುಕೊಳ್ಳುವುದರಿಂದ ಮಾರ್ಕರ್ಗಳು ಮತ್ತು ಓವರ್ಲೇಗಳು ರಾಸ್ಟರ್ ಪದರದ ಮೇಲೆ ವರ್ತಿಸುವಂತೆಯೇ ವರ್ತಿಸುತ್ತವೆ.
MapLibre GL ಗೆ ಸ್ಥಳಾಂತರಿಸಿ
ಒಂದೇ ಲೈಬ್ರರಿ, ಯಾವುದೇ ಅಡಾಪ್ಟರ್ ಇಲ್ಲ, ಮತ್ತು ಮೇಲಿನ ಶೈಲಿಗಳು ಇರುವಂತೆಯೇ ಕೆಲಸ ಮಾಡುತ್ತವೆ. ಸಂಪೂರ್ಣ ಪುಟವು ಒಂದು. ಪುಟದಲ್ಲಿ ನಕ್ಷೆಯನ್ನು ಹಾಕಿ ವಿಭಾಗದಲ್ಲಿದೆ. ಬದಲಾವಣೆಯು ಮುಖ್ಯವಾಗಿ ನಿರ್ದೇಶಾಂಕಗಳ ಕ್ರಮವನ್ನು ತಿರುಗಿಸುವುದಾಗಿದೆ:
| Leaflet | MapLibre GL |
|---|---|
L.map("map").setView([lat, lng], z) | new maplibregl.Map({ container: "map", center: [lng, lat], zoom: z }) |
L.tileLayer(url).addTo(map) | ವೆಕ್ಟರ್ ಮೂಲವನ್ನು ಹೊಂದಿರುವ ಶೈಲಿ; ಮೇಲೆ ನೋಡಿ |
L.marker([lat, lng]).bindPopup(html) | new maplibregl.Marker().setLngLat([lng, lat]).setPopup(new maplibregl.Popup().setHTML(html)) |
L.geoJSON(data) | addSource(id, { type: "geojson", data }), ನಂತರ addLayer |
L.control.scale() | new maplibregl.ScaleControl() |
map.invalidateSize() | map.resize() |
setView([lat, lng]) ಮೊದಲು ಅಕ್ಷಾಂಶವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ; ಪ್ರತಿಯೊಂದು MapLibre ಕರೆಯೂ [lng, lat] ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನಕ್ಷೆಯು ತಪ್ಪು ಗೋಳಾರ್ಧದಲ್ಲಿ ಕಾಣಿಸಿದರೆ ಅದಕ್ಕೆ ಕಾರಣ ಇದೇ ಹೊರತು ಟೈಲ್ಗಳಲ್ಲ. ಶೈಲಿ ಲೋಡ್ ಆಗುವ ಮೊದಲು ಸೇರಿಸಿದ ಮೂಲಗಳು ಮತ್ತು ಪದರಗಳು ಯಾವುದೇ ದೋಷ ಸಂದೇಶವಿಲ್ಲದೆ ಕೈಬಿಡಲ್ಪಡುತ್ತವೆ, ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು map.on("load", …) ಒಳಗೆ ಸೇರಿಸಿ.
“archive contains MVT vector tiles, but leafletRasterLayer is for displaying raster tiles”
ಅದು pmtiles.leafletRasterLayer ಆಗಿದ್ದು, ರಾಸ್ಟರ್ PMTiles ಅನ್ನು ಚಿತ್ರಗಳಾಗಿ ಬಿಡಿಸುತ್ತದೆ. ಇವು ವೆಕ್ಟರ್ ಟೈಲ್ಗಳಾಗಿರುವುದರಿಂದ ಅದು ಇವನ್ನು ನಿರಾಕರಿಸುತ್ತದೆ. ಯಾವುದೇ ಆಯ್ಕೆಯೂ ಅದನ್ನು ಬದಲಾಯಿಸುವುದಿಲ್ಲ, ಮತ್ತು ಇಲ್ಲಿ ಯಾವುದೇ ರಾಸ್ಟರ್ ಪ್ರತಿ ಇಲ್ಲ. ಮೇಲಿನ ಆಯ್ಕೆಗಳಲ್ಲಿ ಒಂದನ್ನು ಬಳಸಿ.
“download.openstreetmap.fr returned 403”
ಅದು ಎಕ್ಸ್ಟ್ರಾಕ್ಟ್ ಮತ್ತು ರೆಪ್ಲಿಕೇಶನ್ ಮಿರರ್ ಆಗಿದೆಯೇ ಹೊರತು ಟೈಲ್ ಸರ್ವರ್ ಅಲ್ಲ. ಅಕ್ಟೋಬರ್ 2026 ರಲ್ಲಿ ಮಿತಿಮೀರಿದ ಡೌನ್ಲೋಡ್ಗಳ ನಂತರ ಅದು ವಿಳಾಸಗಳನ್ನು ನಿರ್ಬಂಧಿಸಿತು, ಮತ್ತು ನಿರ್ವಾಹಕರು ಪ್ರತಿಯೊಂದು ಪ್ರಕರಣವನ್ನು ಪರಿಶೀಲಿಸಿ ಪ್ರವೇಶವನ್ನು ಮರುಸ್ಥಾಪಿಸುವುದಾಗಿ ಹೇಳಿದರು. ಇಲ್ಲಿರುವ ಯಾವುದಕ್ಕೂ ಅದರ ಅಗತ್ಯವಿಲ್ಲ: ಈ ಆರ್ಕೈವ್ Protomaps ಬಿಡುಗಡೆಗಳಿಂದ ಬರುತ್ತದೆ, ಆದ್ದರಿಂದ ನೀವು ಸ್ವತಃ .osm.pbf ಅನ್ನು ಜೋಡಿಸಬೇಕಿಲ್ಲ. ನೀವು OSM ದತ್ತಾಂಶವನ್ನು ಎಳೆಯುವುದಾದರೆ, ನಿಮಿಷದ ಸ್ಟ್ರೀಮ್ ಬದಲಿಗೆ ಆವರ್ತಕ ಎಕ್ಸ್ಟ್ರಾಕ್ಟ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ.
ಶೈಲಿಗಳು
ಅದೇ ಟೈಲ್ಗಳು, ವಿಭಿನ್ನ ಬಣ್ಣಗಳು. ಒಂದನ್ನು ಆರಿಸಿ, ನಕಲಿಸಿ, ಬದಲಾಯಿಸಿ, ಅದು ನಿಮ್ಮದು.
| ಶೈಲಿ | ಹೇಗೆ ಕಾಣಿಸುತ್ತದೆ | ಫೈಲ್ |
|---|
ಟೈಲ್ಗಳಲ್ಲಿ ಏನಿದೆ
ಪುಟ ಲೋಡ್ ಆದಾಗ ಆರ್ಕೈವ್ನ ಸ್ವಂತ ಮೆಟಾಡೇಟಾದಿಂದ ಓದಲಾಗಿದೆ. ಒಂದು ಶೈಲಿಯು ಬಳಸಲೇಬೇಕಾದ ಪದರದ ಹೆಸರುಗಳು ಇವು.
| ಮೂಲ ಪದರ | ಜೂಮ್ | ಫೀಲ್ಡ್ಗಳು |
|---|---|---|
| ಲೋಡ್ ಆಗುತ್ತಿದೆ… | ||
ಇದು ಏನಲ್ಲ
ನೇರ ಉತ್ತರಗಳು, ಇದರಿಂದ ನಂತರ ನಿಮಗೆ ಇಲ್ಲಿ ಯಾವುದೂ ಆಶ್ಚರ್ಯವನ್ನುಂಟುಮಾಡುವುದಿಲ್ಲ.
- ಇಲ್ಲಿ ಯಾವುದೇ ಸೇವಾ ಮಟ್ಟದ ಖಾತರಿ ಇಲ್ಲ. ಇದು ಯಾವುದೇ ಒಪ್ಪಂದವಿಲ್ಲದ ಉಚಿತ ಸೇವೆಯಾಗಿದೆ. ಇದು ನಿಧಾನವಾಗಬಹುದು, ಸ್ಥಗಿತಗೊಳ್ಳಬಹುದು, ಮತ್ತು URL ಹಾಗೂ ದತ್ತಾಂಶವು ಯಾವುದೇ ಮುನ್ಸೂಚನೆಯಿಲ್ಲದೆ ಬದಲಾಗಬಹುದು ಅಥವಾ ಮಾಯವಾಗಬಹುದು. ನಿಮ್ಮ ಉತ್ಪನ್ನವು ಇದನ್ನು ಅವಲಂಬಿಸಿದ್ದರೆ, ಟೈಲ್ಗಳ ನಿಮ್ಮದೇ ಪ್ರತಿಯನ್ನು ಹೋಸ್ಟ್ ಮಾಡಿ ಅಥವಾ ಯಾರಿಂದಲಾದರೂ ಬೆಂಬಲಿತ ಯೋಜನೆಯನ್ನು ಖರೀದಿಸಿ.
- ಇದು ಎಂದಿಗೂ ಗಂಟೆಗನುಗುಣವಾಗಿ ತಾಜಾ ಆಗಿರುವುದಿಲ್ಲ. ಈ ಪ್ರತಿಯು ಹೊಸ Protomaps ಬಿಡುಗಡೆಯ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಆಗಿದೆಯೇ ಹೊರತು ನೇರ ಫೀಡ್ ಅಲ್ಲ. ಇಂದು ಮಾಡಿದ ಸಂಪಾದನೆಗಳು ಇದರಲ್ಲಿ ಇರುವುದಿಲ್ಲ. ಸಮಯದ ವಿವರಗಳು ಇದು ಎಷ್ಟು ಹೊಸದು? ವಿಭಾಗದಲ್ಲಿವೆ.
- ಸಂಪೂರ್ಣ ಫೈಲ್ ಡೌನ್ಲೋಡ್ ಇಲ್ಲ. ವಿನಂತಿಗಳಿಗೆ ಗರಿಷ್ಠ 512 KiB ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಉತ್ತರಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಯಾವುದೇ PMTiles ಕ್ಲೈಂಟ್ ಕೇಳುವುದೂ ಅಷ್ಟನ್ನೇ. ಒಂದೇ ವಿನಂತಿಯಲ್ಲಿ ಸಂಪೂರ್ಣ ಆರ್ಕೈವ್ ಕೇಳಿದರೆ
416ಬರುತ್ತದೆ, ಮತ್ತು ಅದು ಸರಿಯಾಗಿಯೇ ಇದೆ. - ಮನ್ನಣೆ ಉಲ್ಲೇಖ (Attribution) ಕಡ್ಡಾಯವಾಗಿದೆ. ಈ ಟೈಲ್ಗಳನ್ನು OpenStreetMap ನಿಂದ ಪಡೆಯಲಾಗಿದೆ. ನಿಮ್ಮ ಶೈಲಿಯಲ್ಲಿ ಅಥವಾ ನಿಮ್ಮ ನಕ್ಷೆಯಲ್ಲಿ ಕ್ರೆಡಿಟ್ ಸಾಲನ್ನು ಉಳಿಸಿಕೊಳ್ಳಿ.
ಇದು ಎಷ್ಟು ಹೊಸದು?
ಈ ಟೈಲ್ಗಳು Protomaps Basemap ನ ಪ್ರತಿಯಾಗಿದ್ದು, ತಿಂಗಳಿಗೊಮ್ಮೆ ಮರುನಿರ್ಮಿಸಲಾಗುತ್ತದೆ.
- ತಿಂಗಳಿಗೊಮ್ಮೆ ಮರುನಿರ್ಮಿಸಲಾಗುತ್ತದೆ. ಪ್ರತಿ ತಿಂಗಳ ಮೊದಲ ಭಾನುವಾರ, 00:30 ಮತ್ತು 07:00 UTC ನಡುವೆ ಬಿಲ್ಡ್ ನಡೆಯುತ್ತದೆ; ಮೂರು ವರ್ಷಗಳ ಬಿಡುಗಡೆ ಇತಿಹಾಸದಲ್ಲಿ ಅಪ್ಸ್ಟ್ರೀಮ್ ಪ್ರಕಟಿಸದ ಏಕೈಕ ಸಮಯವಿದು. ವಾರಕ್ಕೊಮ್ಮೆ ಅಲ್ಲದೆ ತಿಂಗಳಿಗೊಮ್ಮೆ ಏಕೆಂದರೆ, ಹೊಸ ಆರ್ಕೈವ್ ಬಂದಾಗ CDN ನಲ್ಲಿ ಮತ್ತು ಈಗಾಗಲೇ ಹೊಂದಿರುವ ಪ್ರತಿಯೊಂದು ಬ್ರೌಸರ್ನಲ್ಲಿ ಕ್ಯಾಶ್ ಆಗಿರುವ ಭಾಗಗಳು ಅಮಾನ್ಯವಾಗುತ್ತವೆ, ಮತ್ತು ಪ್ರತಿ ಮರುನಿರ್ಮಾಣಕ್ಕೂ ಬಿಲ್ಡ್ ಸಮಯ ತಗುಲುತ್ತದೆ.
- ಹೆಚ್ಚಿನ ತಿಂಗಳುಗಳಲ್ಲಿ ಮಾಡಲು ಏನೂ ಇರುವುದಿಲ್ಲ. ಅಪ್ಸ್ಟ್ರೀಮ್ ಹೊಸ ಬಿಡುಗಡೆಯನ್ನು ಪ್ರಕಟಿಸಿದಾಗ ಮಾತ್ರ ಮರುನಿರ್ಮಾಣ ನಡೆಯುತ್ತದೆ.
- ಈಗ ಯಾವ ಅಪ್ಸ್ಟ್ರೀಮ್ ಬಿಲ್ಡ್ ಬಳಕೆಯಲ್ಲಿದೆ? ಈ ಪುಟದ ಮೇಲ್ಭಾಗದಲ್ಲಿರುವ ಆರ್ಕೈವ್ ಮೆಟಾಡೇಟಾ ಗುಂಡಿಯನ್ನು ಬಳಸಿ. ಅದು ಆರ್ಕೈವ್ನ ಸ್ವಂತ ಹೆಡರ್ ಅನ್ನು ಓದುವುದರಿಂದ, ಈ ಪುಟದಲ್ಲಿ ಹಳೆಯ ಮಾಹಿತಿ ಉಳಿದುಕೊಳ್ಳುವ ಬದಲು ಉತ್ತರವು ಯಾವಾಗಲೂ ಪ್ರಸ್ತುತವಾಗಿರುತ್ತದೆ.
- ಮರುನಿರ್ಮಾಣವು ತಕ್ಷಣವೇ ಪೂರ್ಣಗೊಳ್ಳುವುದಿಲ್ಲ. ಇದು ಸುಮಾರು ಆರೂವರೆ ಗಂಟೆಗಳ ಕಾಲ ಒಂದಾದ ನಂತರ ಒಂದರಂತೆ ನಡೆಯುವ ಹದಿಮೂರು ಪ್ರತ್ಯೇಕ ಮರುನಿರ್ಮಾಣಗಳಾಗಿವೆ. ಆ ಅವಧಿಯ ಹೆಚ್ಚಿನ ಸಮಯದಲ್ಲಿ ಈ ಪ್ರತಿಯು ಎರಡು ಅಪ್ಸ್ಟ್ರೀಮ್ ಬಿಲ್ಡ್ಗಳ ಮಿಶ್ರಣವಾಗಿರುತ್ತದೆ. ಆ ಸಮಯದಲ್ಲಿ ನೀವು ಕೇಳುವ ಟೈಲ್ ರೀಡರ್ ತೋರಿಸಿದ ಬಿಲ್ಡ್ಗಿಂತ ಹೊಸ ಬಿಲ್ಡ್ನಿಂದ ಬರಬಹುದು; ಅದು ತಪ್ಪು ಸ್ಥಳದ ಟೈಲ್ ಆಗಿ ಕಾಣಿಸುತ್ತದೆಯೇ ಹೊರತು ಮುರಿದ ನಕ್ಷೆಯಾಗಿ ಅಲ್ಲ.
- ಮರುನಿರ್ಮಾಣವು ತಪ್ಪಿಹೋಗಬಹುದು. ಇದು ಸಾಧ್ಯವಾದಷ್ಟು ಉತ್ತಮ ಪ್ರಯತ್ನದ ಕೆಲಸವೇ ಹೊರತು ಖಾತರಿಯಲ್ಲ. ಒಂದು ಹಂತ ವಿಫಲವಾದರೆ, ಪ್ರತಿಯ ಉಳಿದ ಭಾಗವು ಹಿಂದಿನ ಅಪ್ಸ್ಟ್ರೀಮ್ ಬಿಲ್ಡ್ನಲ್ಲಿಯೇ ಉಳಿಯುತ್ತದೆ. ಆಗಲೂ ಅದು ಕೆಲಸ ಮಾಡುವ ನಕ್ಷೆಯೇ ಆಗಿರುತ್ತದೆ.