forked from MapComplete/MapComplete
		
	Featuer: add selfhosted version of pmtiles
This commit is contained in:
		
							parent
							
								
									de74a5dc08
								
							
						
					
					
						commit
						55339435d5
					
				
					 7 changed files with 4543 additions and 11 deletions
				
			
		
							
								
								
									
										423
									
								
								public/assets/protomaps.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										423
									
								
								public/assets/protomaps.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,423 @@ | |||
| { | ||||
|   "attribution": "<a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">© OpenStreetMap</a>", | ||||
|   "bounds": [ | ||||
|     -180, | ||||
|     -85.0511287, | ||||
|     180, | ||||
|     85.0511287 | ||||
|   ], | ||||
|   "center": [ | ||||
|     0, | ||||
|     0, | ||||
|     0 | ||||
|   ], | ||||
|   "description": "Basemap layers derived from OpenStreetMap and Natural Earth, self-hosted", | ||||
|   "maxzoom": 15, | ||||
|   "minzoom": 0, | ||||
|   "name": "Protomaps Basemap", | ||||
|   "scheme": "xyz", | ||||
|   "tilejson": "3.0.0", | ||||
|   "tiles": [ | ||||
|     "https://api.protomaps.com/tiles/v4/{z}/{x}/{y}.mvt?key=e6cd5633d51d8e24" | ||||
|   ], | ||||
|   "vector_layers": [ | ||||
|     { | ||||
|       "fields": { | ||||
|         "brk_a3": "String", | ||||
|         "disputed": "Boolean", | ||||
|         "kind": "String", | ||||
|         "kind_detail": "Number", | ||||
|         "sort_rank": "Number" | ||||
|       }, | ||||
|       "id": "boundaries", | ||||
|       "maxzoom": 15, | ||||
|       "minzoom": 0 | ||||
|     }, | ||||
|     { | ||||
|       "fields": { | ||||
|         "addr_housenumber": "String", | ||||
|         "height": "Number", | ||||
|         "kind": "String", | ||||
|         "kind_detail": "String", | ||||
|         "layer": "Number", | ||||
|         "min_height": "Number", | ||||
|         "sort_rank": "Number" | ||||
|       }, | ||||
|       "id": "buildings", | ||||
|       "maxzoom": 15, | ||||
|       "minzoom": 11 | ||||
|     }, | ||||
|     { | ||||
|       "fields": { | ||||
|         "kind": "String", | ||||
|         "min_zoom": "Number", | ||||
|         "name": "String", | ||||
|         "name2": "String", | ||||
|         "name3": "String", | ||||
|         "name:ar": "String", | ||||
|         "name:bg": "String", | ||||
|         "name:cs": "String", | ||||
|         "name:da": "String", | ||||
|         "name:de": "String", | ||||
|         "name:el": "String", | ||||
|         "name:en": "String", | ||||
|         "name:es": "String", | ||||
|         "name:et": "String", | ||||
|         "name:fa": "String", | ||||
|         "name:fi": "String", | ||||
|         "name:fr": "String", | ||||
|         "name:ga": "String", | ||||
|         "name:he": "String", | ||||
|         "name:hi": "String", | ||||
|         "name:hr": "String", | ||||
|         "name:hu": "String", | ||||
|         "name:id": "String", | ||||
|         "name:it": "String", | ||||
|         "name:ja": "String", | ||||
|         "name:ko": "String", | ||||
|         "name:lt": "String", | ||||
|         "name:lv": "String", | ||||
|         "name:mr": "String", | ||||
|         "name:mt": "String", | ||||
|         "name:ne": "String", | ||||
|         "name:nl": "String", | ||||
|         "name:no": "String", | ||||
|         "name:pl": "String", | ||||
|         "name:pt": "String", | ||||
|         "name:ro": "String", | ||||
|         "name:ru": "String", | ||||
|         "name:sk": "String", | ||||
|         "name:sl": "String", | ||||
|         "name:sv": "String", | ||||
|         "name:tr": "String", | ||||
|         "name:uk": "String", | ||||
|         "name:ur": "String", | ||||
|         "name:vi": "String", | ||||
|         "name:zh-Hans": "String", | ||||
|         "name:zh-Hant": "String", | ||||
|         "pgf:name2": "String", | ||||
|         "pgf:name:hi": "String", | ||||
|         "pgf:name:mr": "String", | ||||
|         "pgf:name:ne": "String", | ||||
|         "script": "String", | ||||
|         "script2": "String", | ||||
|         "script3": "String" | ||||
|       }, | ||||
|       "id": "earth", | ||||
|       "maxzoom": 15, | ||||
|       "minzoom": 0 | ||||
|     }, | ||||
|     { | ||||
|       "fields": { | ||||
|         "kind": "String" | ||||
|       }, | ||||
|       "id": "landcover", | ||||
|       "maxzoom": 7, | ||||
|       "minzoom": 0 | ||||
|     }, | ||||
|     { | ||||
|       "fields": { | ||||
|         "kind": "String", | ||||
|         "sort_rank": "Number" | ||||
|       }, | ||||
|       "id": "landuse", | ||||
|       "maxzoom": 15, | ||||
|       "minzoom": 2 | ||||
|     }, | ||||
|     { | ||||
|       "fields": { | ||||
|         "capital": "String", | ||||
|         "kind": "String", | ||||
|         "kind_detail": "String", | ||||
|         "min_zoom": "Number", | ||||
|         "name": "String", | ||||
|         "name2": "String", | ||||
|         "name3": "String", | ||||
|         "name:ar": "String", | ||||
|         "name:bg": "String", | ||||
|         "name:cs": "String", | ||||
|         "name:da": "String", | ||||
|         "name:de": "String", | ||||
|         "name:el": "String", | ||||
|         "name:en": "String", | ||||
|         "name:es": "String", | ||||
|         "name:et": "String", | ||||
|         "name:fa": "String", | ||||
|         "name:fi": "String", | ||||
|         "name:fr": "String", | ||||
|         "name:ga": "String", | ||||
|         "name:he": "String", | ||||
|         "name:hi": "String", | ||||
|         "name:hr": "String", | ||||
|         "name:hu": "String", | ||||
|         "name:id": "String", | ||||
|         "name:it": "String", | ||||
|         "name:ja": "String", | ||||
|         "name:ko": "String", | ||||
|         "name:lt": "String", | ||||
|         "name:lv": "String", | ||||
|         "name:mr": "String", | ||||
|         "name:mt": "String", | ||||
|         "name:ne": "String", | ||||
|         "name:nl": "String", | ||||
|         "name:no": "String", | ||||
|         "name:pl": "String", | ||||
|         "name:pt": "String", | ||||
|         "name:ro": "String", | ||||
|         "name:ru": "String", | ||||
|         "name:sk": "String", | ||||
|         "name:sl": "String", | ||||
|         "name:sv": "String", | ||||
|         "name:tr": "String", | ||||
|         "name:uk": "String", | ||||
|         "name:ur": "String", | ||||
|         "name:vi": "String", | ||||
|         "name:zh-Hans": "String", | ||||
|         "name:zh-Hant": "String", | ||||
|         "pgf:name": "String", | ||||
|         "pgf:name2": "String", | ||||
|         "pgf:name:en": "String", | ||||
|         "pgf:name:hi": "String", | ||||
|         "pgf:name:mr": "String", | ||||
|         "pgf:name:ne": "String", | ||||
|         "population": "Number", | ||||
|         "population_rank": "Number", | ||||
|         "ref": "String", | ||||
|         "ref:FR:FANTOIR": "String", | ||||
|         "ref:FR:SIREN": "String", | ||||
|         "ref:RS:nkd": "String", | ||||
|         "ref:USCG": "String", | ||||
|         "ref:USPS": "String", | ||||
|         "ref:assessors_office": "String", | ||||
|         "ref:catasto": "String", | ||||
|         "ref:category": "String", | ||||
|         "ref:en": "String", | ||||
|         "ref:lzh": "String", | ||||
|         "ref:nid": "String", | ||||
|         "ref:se:pts:postort": "String", | ||||
|         "ref:vi": "String", | ||||
|         "ref:whc": "String", | ||||
|         "ref:xpcc": "String", | ||||
|         "ref:zh": "String", | ||||
|         "ref:zh-Hans": "String", | ||||
|         "ref:zh-Hant": "String", | ||||
|         "script": "String", | ||||
|         "script2": "String", | ||||
|         "script3": "String", | ||||
|         "sort_key": "Number", | ||||
|         "wikidata": "String" | ||||
|       }, | ||||
|       "id": "places", | ||||
|       "maxzoom": 15, | ||||
|       "minzoom": 0 | ||||
|     }, | ||||
|     { | ||||
|       "fields": { | ||||
|         "elevation": "String", | ||||
|         "iata": "String", | ||||
|         "kind": "String", | ||||
|         "kind_detail": "String", | ||||
|         "min_zoom": "Number", | ||||
|         "name": "String", | ||||
|         "name2": "String", | ||||
|         "name3": "String", | ||||
|         "name:ar": "String", | ||||
|         "name:bg": "String", | ||||
|         "name:cs": "String", | ||||
|         "name:da": "String", | ||||
|         "name:de": "String", | ||||
|         "name:el": "String", | ||||
|         "name:en": "String", | ||||
|         "name:es": "String", | ||||
|         "name:et": "String", | ||||
|         "name:fa": "String", | ||||
|         "name:fi": "String", | ||||
|         "name:fr": "String", | ||||
|         "name:ga": "String", | ||||
|         "name:he": "String", | ||||
|         "name:hi": "String", | ||||
|         "name:hr": "String", | ||||
|         "name:hu": "String", | ||||
|         "name:id": "String", | ||||
|         "name:it": "String", | ||||
|         "name:ja": "String", | ||||
|         "name:ko": "String", | ||||
|         "name:lt": "String", | ||||
|         "name:lv": "String", | ||||
|         "name:mr": "String", | ||||
|         "name:mt": "String", | ||||
|         "name:ne": "String", | ||||
|         "name:nl": "String", | ||||
|         "name:no": "String", | ||||
|         "name:pl": "String", | ||||
|         "name:pt": "String", | ||||
|         "name:ro": "String", | ||||
|         "name:ru": "String", | ||||
|         "name:sk": "String", | ||||
|         "name:sl": "String", | ||||
|         "name:sv": "String", | ||||
|         "name:tr": "String", | ||||
|         "name:uk": "String", | ||||
|         "name:ur": "String", | ||||
|         "name:vi": "String", | ||||
|         "name:zh-Hans": "String", | ||||
|         "name:zh-Hant": "String", | ||||
|         "pgf:name": "String", | ||||
|         "pgf:name2": "String", | ||||
|         "pgf:name3": "String", | ||||
|         "pgf:name:en": "String", | ||||
|         "pgf:name:he": "String", | ||||
|         "pgf:name:hi": "String", | ||||
|         "pgf:name:mr": "String", | ||||
|         "pgf:name:ne": "String", | ||||
|         "script": "String", | ||||
|         "script2": "String", | ||||
|         "script3": "String" | ||||
|       }, | ||||
|       "id": "pois", | ||||
|       "maxzoom": 15, | ||||
|       "minzoom": 5 | ||||
|     }, | ||||
|     { | ||||
|       "fields": { | ||||
|         "is_bridge": "Boolean", | ||||
|         "is_link": "Boolean", | ||||
|         "is_tunnel": "Boolean", | ||||
|         "kind": "String", | ||||
|         "kind_detail": "String", | ||||
|         "min_zoom": "Number", | ||||
|         "name": "String", | ||||
|         "name2": "String", | ||||
|         "name3": "String", | ||||
|         "name:ar": "String", | ||||
|         "name:bg": "String", | ||||
|         "name:cs": "String", | ||||
|         "name:da": "String", | ||||
|         "name:de": "String", | ||||
|         "name:el": "String", | ||||
|         "name:en": "String", | ||||
|         "name:es": "String", | ||||
|         "name:et": "String", | ||||
|         "name:fa": "String", | ||||
|         "name:fi": "String", | ||||
|         "name:fr": "String", | ||||
|         "name:ga": "String", | ||||
|         "name:he": "String", | ||||
|         "name:hi": "String", | ||||
|         "name:hr": "String", | ||||
|         "name:hu": "String", | ||||
|         "name:id": "String", | ||||
|         "name:it": "String", | ||||
|         "name:ja": "String", | ||||
|         "name:ko": "String", | ||||
|         "name:lt": "String", | ||||
|         "name:lv": "String", | ||||
|         "name:mr": "String", | ||||
|         "name:mt": "String", | ||||
|         "name:ne": "String", | ||||
|         "name:nl": "String", | ||||
|         "name:no": "String", | ||||
|         "name:pl": "String", | ||||
|         "name:pt": "String", | ||||
|         "name:ro": "String", | ||||
|         "name:ru": "String", | ||||
|         "name:sk": "String", | ||||
|         "name:sl": "String", | ||||
|         "name:sv": "String", | ||||
|         "name:tr": "String", | ||||
|         "name:uk": "String", | ||||
|         "name:ur": "String", | ||||
|         "name:vi": "String", | ||||
|         "name:zh-Hans": "String", | ||||
|         "name:zh-Hant": "String", | ||||
|         "network": "String", | ||||
|         "oneway": "String", | ||||
|         "pgf:name": "String", | ||||
|         "pgf:name2": "String", | ||||
|         "pgf:name:en": "String", | ||||
|         "pgf:name:hi": "String", | ||||
|         "pgf:name:mr": "String", | ||||
|         "pgf:name:ne": "String", | ||||
|         "ref": "String", | ||||
|         "route": "String", | ||||
|         "script": "String", | ||||
|         "script2": "String", | ||||
|         "script3": "String", | ||||
|         "service": "String", | ||||
|         "shield_text_length": "Number", | ||||
|         "sort_rank": "Number" | ||||
|       }, | ||||
|       "id": "roads", | ||||
|       "maxzoom": 15, | ||||
|       "minzoom": 3 | ||||
|     }, | ||||
|     { | ||||
|       "fields": { | ||||
|         "bridge": "String", | ||||
|         "kind": "String", | ||||
|         "kind_detail": "String", | ||||
|         "layer": "Number", | ||||
|         "min_zoom": "Number", | ||||
|         "name": "String", | ||||
|         "name2": "String", | ||||
|         "name3": "String", | ||||
|         "name:ar": "String", | ||||
|         "name:bg": "String", | ||||
|         "name:cs": "String", | ||||
|         "name:da": "String", | ||||
|         "name:de": "String", | ||||
|         "name:el": "String", | ||||
|         "name:en": "String", | ||||
|         "name:es": "String", | ||||
|         "name:et": "String", | ||||
|         "name:fa": "String", | ||||
|         "name:fi": "String", | ||||
|         "name:fr": "String", | ||||
|         "name:ga": "String", | ||||
|         "name:he": "String", | ||||
|         "name:hi": "String", | ||||
|         "name:hr": "String", | ||||
|         "name:hu": "String", | ||||
|         "name:id": "String", | ||||
|         "name:it": "String", | ||||
|         "name:ja": "String", | ||||
|         "name:ko": "String", | ||||
|         "name:lt": "String", | ||||
|         "name:lv": "String", | ||||
|         "name:mr": "String", | ||||
|         "name:mt": "String", | ||||
|         "name:ne": "String", | ||||
|         "name:nl": "String", | ||||
|         "name:no": "String", | ||||
|         "name:pl": "String", | ||||
|         "name:pt": "String", | ||||
|         "name:ro": "String", | ||||
|         "name:ru": "String", | ||||
|         "name:sk": "String", | ||||
|         "name:sl": "String", | ||||
|         "name:sv": "String", | ||||
|         "name:tr": "String", | ||||
|         "name:uk": "String", | ||||
|         "name:ur": "String", | ||||
|         "name:vi": "String", | ||||
|         "name:zh-Hans": "String", | ||||
|         "name:zh-Hant": "String", | ||||
|         "pgf:name": "String", | ||||
|         "pgf:name2": "String", | ||||
|         "pgf:name:en": "String", | ||||
|         "pgf:name:hi": "String", | ||||
|         "pgf:name:mr": "String", | ||||
|         "pgf:name:ne": "String", | ||||
|         "script": "String", | ||||
|         "script2": "String", | ||||
|         "script3": "String", | ||||
|         "sort_rank": "Number", | ||||
|         "tunnel": "String" | ||||
|       }, | ||||
|       "id": "water", | ||||
|       "maxzoom": 15, | ||||
|       "minzoom": 0 | ||||
|     } | ||||
|   ], | ||||
|   "version": "4.11.0" | ||||
| } | ||||
							
								
								
									
										4085
									
								
								public/assets/sunny-hosted.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4085
									
								
								public/assets/sunny-hosted.json
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -7,9 +7,7 @@ | |||
|       "protomaps": { | ||||
|          "attribution": "<a href=\"https://github.com/protomaps/basemaps\">Protomaps</a> © <a href=\"https://openstreetmap.org\">OpenStreetMap</a>", | ||||
|          "type": "vector", | ||||
|          "tiles": [ | ||||
|             "https://api.protomaps.com/tiles/v4/{z}/{x}/{y}.mvt?key=2af8b969a9e8b692" | ||||
|          ], | ||||
|          "url": "pmtiles://https://cache.mapcomplete.org/planet-latest.pmtiles", | ||||
|          "maxzoom": 15 | ||||
|       } | ||||
|    }, | ||||
|  |  | |||
|  | @ -6,9 +6,7 @@ | |||
|     "protomaps": { | ||||
|       "attribution": "<a href=\"https://github.com/protomaps/basemaps\">Protomaps</a> © <a href=\"https://openstreetmap.org\">OpenStreetMap</a>", | ||||
|       "type": "vector", | ||||
|       "tiles": [ | ||||
|         "https://api.protomaps.com/tiles/v4/{z}/{x}/{y}.mvt?key=2af8b969a9e8b692" | ||||
|       ], | ||||
|       "url": "pmtiles://https://cache.mapcomplete.org/planet-latest.pmtiles", | ||||
|       "maxzoom": 15 | ||||
|     } | ||||
|   }, | ||||
|  |  | |||
|  | @ -16,8 +16,21 @@ export class GenerateSunnyUnlabeled extends Script { | |||
|         writeFileSync("public/assets/sunny-unlabeled.json", JSON.stringify(unlabeled, null, "   ")) | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Generates a variation hosted by api.protomaps | ||||
|      */ | ||||
|     generateHosted() { | ||||
|         const tilesource = "https://api.protomaps.com/tiles/v4/{z}/{x}/{y}.mvt?key=2af8b969a9e8b692" | ||||
|         const hosted = { "#": "AUTOMATICALLY GENERATED! Do not edit.", ...sunny } | ||||
|         delete hosted.sources.protomaps.url | ||||
|         hosted.sources.protomaps["tiles"] = [tilesource] | ||||
|         writeFileSync("public/assets/sunny-hosted.json", JSON.stringify(hosted, null, "   ")) | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     async main(args: string[]): Promise<void> { | ||||
|         this.generateUnlabeled() | ||||
|         this.generateHosted() | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -70,12 +70,13 @@ export class AvailableRasterLayers { | |||
|             throw "Detected invalid global layer with invalid id" | ||||
|         } | ||||
|         return joined.map( | ||||
|             (properties) => | ||||
|                 <RasterLayerPolygon>{ | ||||
|             (properties) => { | ||||
|                 return <RasterLayerPolygon>{ | ||||
|                     type: "Feature", | ||||
|                     properties, | ||||
|                     geometry: BBox.global.asGeometry(), | ||||
|                 } | ||||
|             } | ||||
|         ) | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,14 +1,28 @@ | |||
| { | ||||
|   "layers": [ | ||||
|     { | ||||
|       "url": "pmtiles://https://api.protomaps.com/tiles/v4.json?key=2af8b969a9e8b692", | ||||
|       "style": "assets/sunny.json", | ||||
|       "style": "assets/sunny-hosted.json", | ||||
|       "connect-src": [ | ||||
|         "https://protomaps.github.io" | ||||
|       ], | ||||
|       "best": true, | ||||
|       "id": "protomaps.sunny", | ||||
|       "name": "Protomaps Sunny", | ||||
|       "name": "Protomaps Sunny (Hosted by Protomaps)", | ||||
|       "type": "vector", | ||||
|       "category": "osmbasedmap", | ||||
|       "attribution": { | ||||
|         "text": "Protomaps", | ||||
|         "url": "https://protomaps.com/" | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "style": "assets/sunny.json", | ||||
|       "connect-src": [ | ||||
|         "https://protomaps.github.io" | ||||
|       ], | ||||
|       "best": true, | ||||
|       "id": "protomaps.sunny-self", | ||||
|       "name": "Protomaps Sunny (Hosted by pietervdvn)", | ||||
|       "type": "vector", | ||||
|       "category": "osmbasedmap", | ||||
|       "attribution": { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue