Tayilolin Protomaps Basemap
Dukkan Protomaps Basemap, daga zoom 0 zuwa 15, ana bayar da shi a matsayin rumbun fayil ɗaya na PMTiles ta hanyar HTTP zalla. Nuna wa kowane manhajar PMTiles wannan URL ɗin kuma zai yi aiki.
https://tiles.jasontally.com/basemap.pmtiles
- Babu maɓallin APIBabu abin da za a yi rajista, babu alamar sirri a cikin lambar ka.
- Babu iyakar adadiBabu rage gudu, babu kason adadi, babu iyakar tura buƙatu lokaci guda.
- Kowane wataAna sake gina shi daga sabon fitowar Protomaps sau ɗaya a wata.
An toshe tayil ɗin OpenStreetMap, ko ka sami 403 daga tile.openstreetmap.org? Fara daga nan.
Gwada shi
Rumbun fayil ɗaya a cikin saloli uku. Canza salon kuma tayilolin da aka riga aka ɗora za su ci gaba da zama a wurinsu, don haka yana faruwa nan take.
Ƙirƙiri naka
Canza launi ko kashe wani mataki kuma taswirar za ta sabunta yayin da kake yi. Sa'an nan ka kwafi salon JSON, wanda salon MapLibre ne na yau da kullun da za ka iya ɗaukar nauyin ajiyarsa da kanka. Yana nuna waɗannan tayilolin, don haka yana ci gaba da aiki a duk inda ka saka shi.
Yi amfani da shi
Rumbun fayil ɗin yana amsa buƙatun range na HTTP, don haka kowace manhajar PMTiles za ta iya karanta shi.
Ɗaya. Saka taswira a kan shafin
Kwafi wannan fayil ɗin. Shi ne cikakken misalin: alamomi uku, URL ɗin salo guda ɗaya, taswira ɗaya. Dukkan ɗakunan karatu guda biyu an tsayar da sigarsu kuma suna ƙarƙashin BSD-3-Clause, sannan ana bayar da fayiloli iri ɗaya daga wannan sabar idan ba ka son amfani da 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>
Biyu. Sauya tayilolin a cikin salon da ka riga ka mallaka
Kowane salon MapLibre yana karanta tayilolinsa daga wani tushe. Don amfani da waɗannan tayilolin, canza wannan url ɗin kawai. Babu wani abu kuma a cikin salon da zai canza.
"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>"
}
}
Ko ka yi shi a cikin lamba, wanda ke da amfani idan salon yana fitowa daga sabar da ba ka da iko a kanta:
// 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 });
Uku. Inda za ka saka salon da ka ƙirƙira
Maɓallin Salon JSON a cikin wurin ginawa na sama yana buɗe salon da wannan taswirar take zanawa a yanzu, tare da gyare-gyaren da aka yi, kuma akwatin yana da maɓallin kwafi. Akwai hanyoyi biyu na amfani da abin da ya ba ka, kuma duka biyun shafukan yanar gizo ne na yau da kullun.
Ajiye shi a matsayin fayil kusa da shafinka kuma ka nuna style zuwa gare shi, kamar yadda ake amfani da saloli uku a kan wannan sabar. Wannan shi ne abin zaɓa idan salon naka ne kuma yana canzawa tare da shafinka:
// 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
});
Ko ka bar shi a cikin HTML, wanda fayil ɗaya ne kawai za a motsa kuma babu abin da za a ɗora a saba. Salo iri ɗaya ne, wurin da yake zama ne kawai ya bambanta:
// 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 });
Bar layukan glyphs da sprite yadda suke. Su ne ke zana sunaye da alamomi, kuma suna nuna wannan sabar, don haka salon da ka liƙa a cikin shafinka zai ci gaba da aiki daga duk inda ka bayar da shi. Nuna su zuwa protomaps.github.io/basemaps-assets a maimakon haka idan ba ka son dogara da wannan sabar kwata-kwata.
Abu ɗaya da za a duba kafin ka sauya. Wannan rumbun fayil ɗin Protomaps schema v3 ne. Salon da aka rubuta don wani tsari daban zai ɗoru sannan ba zai zana komai ba, saboda sunayen matakan tushe ba su dace ba. An jera sunayen matakai tara a ƙasa, tare da salon v3 da aka riga aka shirya wanda za ka iya kwafa daga ciki.
Huɗu. Nau'ikan rubutu, sprites da ɗakunan karatu
Taswira ita ce tayiloli, URL na glyphs don rubutu, URL na sprite na zaɓi don alamomi, da kuma ɗakunan karatu don zana kowannensu. Dukkan waɗannan suna nan, a hanyoyin da kowanne ke tsammani, don haka taswira za ta iya fitowa daga sunan saba guda ɗaya idan kana so.
| Mene ne | URL a nan | Lasisi |
|---|
Fayilolin MapLibre da PMTiles suna kan jsDelivr da kuma nan. Kowanne URL yana aiki.
Wannan shafin ba ya amfani da layin ƙarshe. Shi ne mai zana vector na Leaflet, an wallafa shi a nan don sauyin ya zama alamar script guda ɗaya. Ita kanta Leaflet tana zama a kan nata CDN.
Jerin nau'ikan rubutu guda biyu, Noto Sans Regular da Noto Sans Medium, an raba su zuwa zanguna 256 da MapLibre ke nema, maki 256 a lokaci guda. An wallafa dukkan 256, ba na haruffan Latin kaɗai ba: Protomaps yana sa wa wurare suna da yarensu na asali, don haka Tokyo ko Alƙahira suna buƙatar zanguna a cikin dubbai da yawa. Idan aka wallafa abin da taswirar Turanci ke amfani da shi kaɗai, waɗannan sunayen za su ɓace, ba tare da wani kuskure da zai faɗi dalilin ba.
Takardun sprite guda biyar, ɗaya ga kowane nau'in tushe, a girman 1x da 2x. Salolin da ke ƙasa suna zana alamomi daga gare su, don haka ana ɗauko waɗannan. Idan kana son ɗigon garuruwa, garkuwar manyan hanyoyi ko alamomin wurare a cikin naka salon, nuna sprite zuwa na nau'in da ka zaɓa. An jera sunayen alamomin da ke cikin takarda a cikin light.json ɗinta.
Abin da taswirar ke zanawa, da kuma inda kowane abu ke fitowa
Kowane mataki ɗaya ne daga cikin matakan tushe tara a cikin wannan rumbun fayil, don haka babu abin da ke nan da ke buƙatar rumbun fayil na biyu. Biyu daga cikinsu sun cancanci a bayyana su, saboda duka biyun suna kama da wani abu da ya ɓace alhali ba haka ba ne:
| Mataki | Yana fitowa daga | Yana cikin wannan ginin? |
|---|---|---|
| Siffofi, hanyoyi, gine-gine, ruwa, ƙasa | earth, landcover, landuse, water, roads, buildings | eh |
| Sunayen wurare, hanyoyi da ruwa | filin name a kan waɗannan matakan | eh |
| Alamomin wurare, ɗigon garuruwa | pois.kind, places, tare da sprite | eh |
| Garkuwar hanyoyi | roads.shield_text | a'a. Ginin da ake bayarwa ba shi da wannan filin |
| Lambobin gida | buildings.kind=address da buildings.addr_housenumber | a'a, dalili ɗaya |
Babu rumbun fayil na adireshi daban, kuma babu matakin adireshi da za a ɗauko. Aikin tushe yana saka ɗigon adireshi a cikin matakin buildings, a matsayin abubuwa masu kind=address da addr_housenumber. Wannan filin ya zo a wani ginin Protomaps na baya fiye da wanda wannan taswirar ke bayarwa, don haka an riga an gina matakin lambar gida kuma zai kunna kansa lokacin da sabuntawar wata mai zuwa ta shigo da su. Haka abin yake ga rubutun garkuwar hanya: ginin yanzu yana ɗauke da shield_text_length, wanda shi ne adadin haruffan da lambar hanya take da shi ba ko mene ne su ba, don haka garkuwar da aka zana daga gare shi za ta zama siffa mara rubutu a kan kowace babbar hanya.
Rubuta mataki da kanka, da kuma ba shi launi
Mataki shi ne mataci, girman zoom, siffa da launi. Abubuwa biyu a cikin matacin suna ruɗar kowa, kuma duka biyun suna kasa aiki ba tare da kuskure ba:
kindshi ne sunan gamayya. Ga hanyoyi yana ɗaya daga cikinhighway,major_road,minor_road,path,rail. Sunayen da ke cikin takardun tushe —motorway,primary,residential— ƙimominkind_detailne, kuma matakin da ke tacekindda su ba ya zana komai kuma ba ya faɗin hakan a ko'ina.- Ba a zana mataki a ƙasa da nasa
minzoom. Rumbun fayil ɗin yana tsayawa a z15, don haka matakin da minzoom ɗinsa yake 16 ba a taɓa zana shi kwata-kwata. Yawancin abubuwa kuma suna ɗauke da nasumin_zoom, wato matakin zoom da bayanan suka ce sun cancanci a nuna su, kuma salolin da aka bayar suna gwada wannan ma.
Don haka hanya, sunanta, da maɓallin kunnawa da kashewa don kashe layin:
{
"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]
}
}
Suna matakin alama ne da ke karanta filin name, tare da haske zagaye da shi ko babu komai a bayansa. Glyph ɗin da babu shi ba ya ba da kuskure, don haka jerin rubutun da ka nema dole ne ya zama ɗaya daga cikin biyun da ke kan wannan sabar:
{
"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
}
}
Matakin da ba ya zana komai ba kuskure ba ne, kuma MapLibre ba zai faɗi wane gwaji ne ya kasa ba. Idan naka babu komai a ciki, duba bisa wannan tsarin: sunan filin, minzoom na matakin, jerin nau'in rubutu, sa'an nan sunan alamar a cikin light.json na takardar.
Idan kana da salon da ke nuna glyphs ɗinsa zuwa demotiles.maplibre.org, sauya wannan sunan sabar shi ne dukkan canjin. Hanyar iri ɗaya ce da gangan.
"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",
Idan salo ya nemi jerin nau'in rubutu wanda ba ɗaya daga cikin biyun da ke sama ba ne, ba za a zana masa komai ba. Salolin Protomaps na kansa suna amfani da Noto Sans Medium don rubutu mai kauri; babu Noto Sans Bold a cikin wannan rukuni, shi ya sa salon da ya nemi ɗaya yake rasa kowane suna ba tare da kuskure ba.
Wace saba ce ta fi sauri, da abin da aka yanke shawara a kai. An auna maimakon zato: buƙatu masu bin juna, ɗaya bayan ɗaya, a kan haɗi guda ɗaya, an zubar da gwaje-gwaje uku na farko, an raba lokacin samun byte na farko daga na saukar da bayanan. A wannan gwajin CDN ya amsa da wuri da ms 10 zuwa 45 ga kowane ɗaya daga cikin waɗannan fayilolin, wanda ya cika ƙa'idar 15% gaba ɗaya kuma tazara ce da gwaje-gwajen suka wuce a fili. Don wannan dalilin ne ɗakunan karatu suke ɗoruwa daga jsDelivr.
Ana bayar da nau'ikan rubutu da sprites daga nan duk da cewa wannan gwajin ya nuna CDN zai amsa su da wuri da kusan ms 10. Wannan shawara ce, ba awo ba. Taswirar da ke fitowa daga sunan saba guda ɗaya ba ta lalacewa lokacin da ta wani ta samu matsala, kuma sabar glyph da ta tsaya tana nufin taswira mara sunaye. Idan ka fi son samun wannan ms 10, nuna glyphs zuwa protomaps.github.io/basemaps-assets/fonts kuma zai yi aiki da hanya iri ɗaya. Lambobin mai karatu ɗaya daga birni ɗaya, kuma sake gudanar da kwatancen umarni ɗaya ne.
Biyar. Game da Leaflet
L.tileLayer na Leaflet yana zana hotuna; waɗannan tayilolin vector ne. Taswirar Leaflet har yanzu tana iya amfani da su, kuma kowace hanya tana barin alamominka, akwatunan bayani da maɓallan sarrafawa yadda suke. Dukkan sauye-sauyen biyu suna cikin Koma daga tayilolin OpenStreetMap.
Shida. Karanta rumbun fayil tare da ɗakin karatun PMTiles
Babu taswira, bayanai kawai. Yana da amfani ga scripts, gwaje-gwaje da duk wani abu da ba hoto ba.
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);
Lura da rukunai biyun. FetchSource shi ne mai karanta byte ta HTTP, kuma PMTiles shi ne mai karantawa da ke zaune a samansa kuma ya fahimci tsarin. FileSource shi ne takwaransa na fayil ɗin cikin na'ura ga FetchSource; idan aka ba shi rubutun URL ba zai yi aiki ba.
Rumbun fayil ɗin hoton lokaci ɗaya ne, ba bayanan kai tsaye ba. Yaya sabuntakar wannan? yana ɗauke da lokutan.
Koma daga tayilolin OpenStreetMap
Toshewar manufar amfani da tayil, kuskuren 403, da abin da za a yi game da su. Babu maɓalli, babu kason adadi.
Me ya sa taswirar ke nuna toshewa
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
Sabobin tayil sun aiko wannan hoton a maimakon taswirar, da gangan, a ƙarƙashin manufar amfani da tayil. Ba matsala ba ce, kuma gyara URL ɗin ba ya cire ta.
Abin da mutane ke fara gwadawa:
- Canza
a/b/czuwa asalin sabar ba ya buɗe maka toshewar. Ana buƙatar asalin URL ɗin, amma toshewar tana maƙale ne da manhajar ko Referer ɗin da aka gani, ba da sunan sabar ba. - Sake gwadawa yana ƙara taɓarɓare shi. Yawan buƙatu yana ɗaya daga cikin abin da aka yi toshewar dominsa.
- Babu wata dabarar header da ke ceto shafin da aka buɗe daga diski.
file://ba ya turaReferer. TuraX-Requested-Witha maimakon haka zai buƙaci binciken farko na CORS (preflight) ga kowane tayil, kuma sabobin tayil suna ƙin wannan preflight ɗin ma. Firefox da Chromium sun bambanta a waɗanne headers suke turawa; ƙa'idar iri ɗaya ce ga duka biyun. - Yana aiki a kan
localhost, an toshe shi a kan shafin yanar gizo na ainihi? Wannan shi ne tushen. Referer na yankin yanar gizonka shi ne ake toshewa, kumalocalhostyana tura wani daban.
Ofisoshi, makarantu, VPN da hanyoyin sadarwa na wayar hannu suna raba adireshi ɗaya, kuma toshewa tana shafar adiresoshi kamar yadda take shafar manhajoji. Daga ɓangarenka ba za ka iya gane wanne ne ya same ka ba.
Don haka daina tambayar waɗannan sabobin. Akwai hanyoyi uku na fita daga gare su.
Ci gaba da amfani da Leaflet
protomaps-leaflet yana zana tayilolin vector a cikin Leaflet. Yana karanta rumbun fayil ɗin da kansa kuma yana ƙara kansa a matsayin mataki na yau da kullun, don haka alamomi, akwatunan bayani, GeoJSON da maɓallan sarrafawa suna ci gaba da zama a inda suke. Akwai kwafi a nan, an gwada shi da wannan rumbun fayil: https://tiles.jasontally.com/vendor/protomaps-leaflet.js.
Kafin:
<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>
Bayan:
<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>
flavoryana ɗaya daga cikinlight,dark,white,grayscalekoblack. Waɗannan su ne jigogin ɗakin karatun, ba salolin da ke sama ba, don haka launukan ba za su dace daidai ba.- Sunaye rubutun canvas ne a cikin nau'in rubutun na'ura. Babu URL na glyph, babu nau'in rubutu da zai iya ba da 404.
- z15 shi ne tayil mafi zurfi. Matakin yana ƙara girman gani fiye da shi, kuma
maxDataZoom: 15ya riga ya zama na asali.
protomaps-leaflet yana cikin yanayin kulawa kawai a tushe: gyare-gyare, ba sabbin fasaloli ba. Yana da kyau ga manhajar Leaflet da take aiki a yanzu. Sabon aiki ya kamata ya fara a kan MapLibre GL.
Ci gaba da Leaflet, zana da MapLibre
@maplibre/maplibre-gl-leaflet yana saka taswirar MapLibre a cikin bangon tayil na Leaflet. Yi amfani da shi lokacin da kake son ɗaya daga cikin salolin da ke sama, ko tudu da inuwar tsaunuka, a cikin manhajar da za ta ci gaba da zama 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>
- Yi rajistar ka'idar sadarwa da farko. Ba tare da layin
addProtocolba, console ɗin zai ceURL scheme "pmtiles" is not supportedkuma taswirar za ta kasance fanko. - MapLibre yana zanawa kasa da Leaflet da matakin zoom ɗaya. Tayilolinsa 512 px ne idan aka kwatanta da 256 na Leaflet, don haka mataki mai
minzoom12 yana bayyana lokacin da Leaflet ya kai z13. - Leaflet har yanzu yana zanawa a sama. Canvas ɗin yana zaune a cikin bangon tayil, don haka alamomi da abubuwan da aka ɗora a sama suna aiki kamar yadda suke yi a kan matakin raster.
Koma zuwa MapLibre GL
Ɗakin karatu guda ɗaya, babu mai haɗawa, kuma salolin da ke sama suna aiki yadda suke. Cikakken shafin yana cikin Ɗaya. Saka taswira a kan shafin. Sauyin yawanci juya tsarin lissafin wurare ne kawai:
| 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) | salo mai tushen vector; duba sama |
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 }), sa'an nan addLayer |
L.control.scale() | new maplibregl.ScaleControl() |
map.invalidateSize() | map.resize() |
setView([lat, lng]) yana ɗaukar latitude da farko; kowane kiran MapLibre yana ɗaukar [lng, lat]. Taswirar da ta bayyana a ɓangaren duniya da ba daidai ba wannan ne dalilin, ba tayilolin ba. Tushe da matakan da aka ƙara kafin salon ya ɗoru ana watsar da su ba tare da kuskure ba, don haka ƙara su a cikin map.on("load", …).
“archive contains MVT vector tiles, but leafletRasterLayer is for displaying raster tiles”
Wannan shi ne pmtiles.leafletRasterLayer, wanda ke zana PMTiles na raster a matsayin hotuna. Waɗannan tayilolin vector ne, don haka yana ƙin karɓarsu. Babu wani zaɓi da ke canza hakan, kuma babu kwafin raster a nan. Yi amfani da ɗaya daga cikin zaɓuɓɓukan da ke sama.
“download.openstreetmap.fr returned 403”
Wannan sabar kwafi ce da cire bayanai, ba sabar tayil ba. A watan Oktoba 2026 ta toshe adiresoshi bayan sauke bayanai ba bisa ƙa'ida ba, kuma masu kula da ita sun ce za su dawo da damar shiga daki-daki. Babu abin da ke nan da ke buƙatarta: wannan rumbun fayil yana fitowa ne daga fitowar Protomaps, don haka ba ka haɗa .osm.pbf da kanka. Idan kana jawo bayanan OSM, ɗauki kwafin lokaci-lokaci maimakon na kowane minti.
Saloli
Tayiloli iri ɗaya, launuka daban-daban. Zaɓi ɗaya, kwafe shi, canza shi, naka ne.
| Salo | Kamanninsa | Fayil |
|---|
Abin da ke cikin tayilolin
Ana karantawa daga bayanan rumbun fayil ɗin kansa yayin buɗe shafin. Waɗannan su ne sunayen matakai da dole ne salo ya yi amfani da su.
| Matakin tushe | Zoom | Filaye |
|---|---|---|
| yana ɗorawa… | ||
Abin da wannan ba shi ba ne
Amsoshi na gaskiya a fili, don kada wani abu a nan ya ba ka mamaki daga baya.
- Babu tabbacin matakin aiki. Wannan hidima ce ta kyauta ba tare da wata yarjejeniya a bayanta ba. Tana iya yin jinkiri, tana iya tsayawa, kuma URL ɗin da bayanan suna iya canzawa ko ɓacewa ba tare da sanarwa ba. Idan manhajarka ta dogara da ita, ɗauki nauyin naka kwafin tayilolin da kanka ko ka sayi tsarin da ake tallafawa daga wani.
- Ba ya kasancewa na wannan sa'ar. Kwafin hoton sabon fitowar Protomaps ne, ba bayanan kai tsaye ba. Gyare-gyaren da aka yi a yau ba sa cikinsa. Yaya sabuntakar wannan? yana ɗauke da lokutan.
- Babu sauke fayil gaba ɗaya. Ana amsa buƙatu a cikin zanguna na mafi yawa 512 KiB, wanda shi ne dukkan abin da manhajar PMTiles ke nema. Neman dukkan rumbun fayil ɗin a cikin buƙata guda ɗaya yana dawo da
416, wanda hakan daidai ne. - Ana buƙatar ambaton tushe. An samo tayilolin ne daga OpenStreetMap. Bar layin ambaton tushe a cikin salonka ko a kan taswirarka.
Yaya sabuntakar wannan?
Tayilolin kwafin Protomaps Basemap ne, ana sake gina su sau ɗaya a wata.
- Ana sake ginawa sau ɗaya a wata. Ginin yana gudana a ranar Lahadi ta farko ta wata, tsakanin 00:30 da 07:00 UTC, lokaci ɗaya tilo da tushen bai taɓa wallafa sabon abu ba a cikin tarihin fitowa na shekaru uku. Ana yi kowane wata ba kowane mako ba, saboda sabon rumbun fayil yana soke ɓangarorin da aka adana a cache a kan CDN da kuma a cikin kowace manhajar bincike da ta riga ta same su, kuma kowane sake ginawa yana cin lokacin gini.
- Babu abin yi a yawancin watanni. Sake ginawa yana faruwa ne kawai lokacin da tushen ya wallafa sabon fitowa.
- Wane ginin tushe ake amfani da shi a yanzu? Yi amfani da maɓallin Bayanan rumbun fayil a saman wannan shafin. Yana karanta taken rumbun fayil ɗin kansa, don haka amsar koyaushe sabuwa ce maimakon wani abu da wannan shafin zai iya barin tsohon bayani a kai.
- Sake ginawa ba ya faruwa nan take. Ginawa daban-daban guda goma sha uku ne da suka bazu a cikin kusan sa'o'i shida da rabi, ɗaya bayan ɗaya. A mafi yawan wannan lokacin kwafin gauraye ne na ginawa biyu na tushe. Tayil ɗin da ka nema a wannan lokacin yana iya fitowa daga sabon ginin maimakon wanda mai karantawar ya sanar, wanda ke bayyana a matsayin tayil daga wuri na daban, ba a matsayin taswirar da ta lalace ba.
- Sake ginawa yana iya tsallakewa. Aiki ne na bakin ƙoƙari, ba alkawari ba. Idan mataki ɗaya ya kasa, sauran kwafin yana ci gaba da zama a kan ginin tushe na baya. Har yanzu taswira ce mai aiki.