chore: add build artifacts, map assets, and routing data
This commit is contained in:
@@ -144,6 +144,9 @@ const MapComponent: React.FC<MapProps> = ({
|
||||
if (map.current.getLayer('hillshading')) {
|
||||
map.current.setLayoutProperty('hillshading', 'visibility', showTerrain ? 'visible' : 'none');
|
||||
}
|
||||
if (map.current.getLayer('terrain-hillshade')) {
|
||||
map.current.setLayoutProperty('terrain-hillshade', 'visibility', showTerrain ? 'visible' : 'none');
|
||||
}
|
||||
|
||||
// Toggle Contours
|
||||
const contourLayers = ['contour-lines-minor', 'contour-lines-major', 'contour-labels'];
|
||||
@@ -498,6 +501,33 @@ const MapComponent: React.FC<MapProps> = ({
|
||||
});
|
||||
}
|
||||
|
||||
// 3D Elevation Hillshade Relief (315° North-West Illumination)
|
||||
if (!initialMap.getSource('terrain-dem')) {
|
||||
initialMap.addSource('terrain-dem', {
|
||||
type: 'raster-dem',
|
||||
tiles: ['https://tiles.intaleqapp.com/raster_dem/{z}/{x}/{y}.png'],
|
||||
tileSize: 256,
|
||||
maxzoom: 14,
|
||||
});
|
||||
|
||||
initialMap.addLayer({
|
||||
id: 'terrain-hillshade',
|
||||
type: 'hillshade',
|
||||
source: 'terrain-dem',
|
||||
layout: {
|
||||
visibility: showTerrain ? 'visible' : 'none',
|
||||
},
|
||||
paint: {
|
||||
'hillshade-illumination-direction': 315,
|
||||
'hillshade-illumination-anchor': 'viewport',
|
||||
'hillshade-shadow-color': '#3b1c06',
|
||||
'hillshade-highlight-color': '#ffffff',
|
||||
'hillshade-accent-color': '#9a3412',
|
||||
'hillshade-exaggeration': 0.65,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
const demSource = getSharedDemSource();
|
||||
const contourUrl = demSource.contourProtocolUrl({
|
||||
thresholds: {
|
||||
@@ -576,6 +606,85 @@ const MapComponent: React.FC<MapProps> = ({
|
||||
'text-halo-width': 2,
|
||||
},
|
||||
});
|
||||
|
||||
// Hydro-Flattening Water Mask over Contour Layers
|
||||
if (!initialMap.getLayer('water-mask-hydroflat-map')) {
|
||||
initialMap.addLayer({
|
||||
id: 'water-mask-hydroflat-map',
|
||||
type: 'fill',
|
||||
source: 'local-osm-polygons',
|
||||
'source-layer': 'planet_osm_polygon',
|
||||
filter: [
|
||||
'any',
|
||||
['==', 'natural', 'water'],
|
||||
['==', 'water', 'reservoir'],
|
||||
['==', 'water', 'dam'],
|
||||
['==', 'water', 'lake'],
|
||||
['==', 'water', 'pond'],
|
||||
['==', 'waterway', 'riverbank'],
|
||||
['==', 'landuse', 'reservoir'],
|
||||
['==', 'landuse', 'basin']
|
||||
],
|
||||
paint: {
|
||||
'fill-color': '#90C3D4',
|
||||
'fill-opacity': 1.0
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Military Mountain Peak Spot Heights (✕ [ele]m)
|
||||
if (!initialMap.getLayer('tactical-peaks-spot-heights')) {
|
||||
initialMap.addLayer({
|
||||
id: 'tactical-peaks-spot-heights',
|
||||
type: 'symbol',
|
||||
source: 'local-osm-points',
|
||||
'source-layer': 'planet_osm_point',
|
||||
minzoom: 9,
|
||||
filter: [
|
||||
'any',
|
||||
['in', 'natural', 'peak', 'volcano', 'ridge', 'hill', 'cliff'],
|
||||
['in', 'place', 'isolated_dwelling', 'locality']
|
||||
],
|
||||
layout: {
|
||||
'text-field': [
|
||||
'case',
|
||||
['has', 'ele'],
|
||||
[
|
||||
'concat',
|
||||
'✕ ',
|
||||
['to-string', ['get', 'ele']],
|
||||
'م\n',
|
||||
['coalesce', ['get', 'name:ar'], ['get', 'name'], '']
|
||||
],
|
||||
[
|
||||
'concat',
|
||||
'✕\n',
|
||||
['coalesce', ['get', 'name:ar'], ['get', 'name'], 'مرتفع']
|
||||
]
|
||||
],
|
||||
'text-font': ['Noto Sans Bold', 'Open Sans Bold'],
|
||||
'text-size': [
|
||||
'interpolate',
|
||||
['linear'],
|
||||
['zoom'],
|
||||
9, 9,
|
||||
11, 10,
|
||||
13, 11.5,
|
||||
15, 13,
|
||||
17, 15
|
||||
],
|
||||
'text-anchor': 'center',
|
||||
'text-justify': 'center',
|
||||
'text-padding': 8,
|
||||
'text-allow-overlap': false
|
||||
},
|
||||
paint: {
|
||||
'text-color': '#7F1D1D',
|
||||
'text-halo-color': 'rgba(255,255,255,0.95)',
|
||||
'text-halo-width': 2.2
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
onMapLoad(map.current!);
|
||||
|
||||
Reference in New Issue
Block a user