@tileflow/maps 0.1.0-alpha.8 → 0.1.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +146 -4
- package/THIRD_PARTY_NOTICES.md +24 -6
- package/assets/README.md +23 -2
- package/assets/streets/build-trees.mjs +425 -0
- package/assets/streets/icons/aerialway-dark.svg +11 -0
- package/assets/streets/icons/aerialway-monochrome-dark.svg +11 -0
- package/assets/streets/icons/aerialway-monochrome.svg +11 -0
- package/assets/streets/icons/aerialway.svg +11 -0
- package/assets/streets/icons/airport-dark.svg +11 -0
- package/assets/streets/icons/airport-monochrome-dark.svg +11 -0
- package/assets/streets/icons/airport-monochrome.svg +11 -0
- package/assets/streets/icons/airport.svg +11 -0
- package/assets/streets/icons/amusement-park-dark.svg +11 -0
- package/assets/streets/icons/amusement-park-monochrome-dark.svg +11 -0
- package/assets/streets/icons/amusement-park-monochrome.svg +11 -0
- package/assets/streets/icons/amusement-park.svg +11 -0
- package/assets/streets/icons/aquarium-dark.svg +11 -0
- package/assets/streets/icons/aquarium-monochrome-dark.svg +11 -0
- package/assets/streets/icons/aquarium-monochrome.svg +11 -0
- package/assets/streets/icons/aquarium.svg +11 -0
- package/assets/streets/icons/art-gallery-dark.svg +11 -0
- package/assets/streets/icons/art-gallery-monochrome-dark.svg +11 -0
- package/assets/streets/icons/art-gallery-monochrome.svg +11 -0
- package/assets/streets/icons/art-gallery.svg +11 -0
- package/assets/streets/icons/bank-dark.svg +11 -0
- package/assets/streets/icons/bank-monochrome-dark.svg +11 -0
- package/assets/streets/icons/bank-monochrome.svg +11 -0
- package/assets/streets/icons/bank.svg +11 -0
- package/assets/streets/icons/bar-dark.svg +11 -0
- package/assets/streets/icons/bar-monochrome-dark.svg +11 -0
- package/assets/streets/icons/bar-monochrome.svg +11 -0
- package/assets/streets/icons/bar.svg +11 -0
- package/assets/streets/icons/beach-dark.svg +11 -0
- package/assets/streets/icons/beach-monochrome-dark.svg +11 -0
- package/assets/streets/icons/beach-monochrome.svg +11 -0
- package/assets/streets/icons/beach.svg +11 -0
- package/assets/streets/icons/beauty-dark.svg +11 -0
- package/assets/streets/icons/beauty-monochrome-dark.svg +11 -0
- package/assets/streets/icons/beauty-monochrome.svg +11 -0
- package/assets/streets/icons/beauty.svg +11 -0
- package/assets/streets/icons/bookstore-dark.svg +11 -0
- package/assets/streets/icons/bookstore-monochrome-dark.svg +11 -0
- package/assets/streets/icons/bookstore-monochrome.svg +11 -0
- package/assets/streets/icons/bookstore.svg +11 -0
- package/assets/streets/icons/buddhist-dark.svg +11 -0
- package/assets/streets/icons/buddhist-monochrome-dark.svg +11 -0
- package/assets/streets/icons/buddhist-monochrome.svg +11 -0
- package/assets/streets/icons/buddhist.svg +11 -0
- package/assets/streets/icons/bus-dark.svg +11 -0
- package/assets/streets/icons/bus-monochrome-dark.svg +11 -0
- package/assets/streets/icons/bus-monochrome.svg +11 -0
- package/assets/streets/icons/bus.svg +11 -0
- package/assets/streets/icons/campsite-dark.svg +11 -0
- package/assets/streets/icons/campsite-monochrome-dark.svg +11 -0
- package/assets/streets/icons/campsite-monochrome.svg +11 -0
- package/assets/streets/icons/campsite.svg +11 -0
- package/assets/streets/icons/car-dark.svg +11 -0
- package/assets/streets/icons/car-monochrome-dark.svg +11 -0
- package/assets/streets/icons/car-monochrome.svg +11 -0
- package/assets/streets/icons/car-repair-dark.svg +11 -0
- package/assets/streets/icons/car-repair-monochrome-dark.svg +11 -0
- package/assets/streets/icons/car-repair-monochrome.svg +11 -0
- package/assets/streets/icons/car-repair.svg +11 -0
- package/assets/streets/icons/car.svg +11 -0
- package/assets/streets/icons/casino-dark.svg +11 -0
- package/assets/streets/icons/casino-monochrome-dark.svg +11 -0
- package/assets/streets/icons/casino-monochrome.svg +11 -0
- package/assets/streets/icons/casino.svg +11 -0
- package/assets/streets/icons/castle-dark.svg +11 -0
- package/assets/streets/icons/castle-monochrome-dark.svg +11 -0
- package/assets/streets/icons/castle-monochrome.svg +11 -0
- package/assets/streets/icons/castle.svg +11 -0
- package/assets/streets/icons/cemetery-dark.svg +11 -0
- package/assets/streets/icons/cemetery-monochrome-dark.svg +11 -0
- package/assets/streets/icons/cemetery-monochrome.svg +11 -0
- package/assets/streets/icons/cemetery.svg +11 -0
- package/assets/streets/icons/charging-station-dark.svg +11 -0
- package/assets/streets/icons/charging-station-monochrome-dark.svg +11 -0
- package/assets/streets/icons/charging-station-monochrome.svg +11 -0
- package/assets/streets/icons/charging-station.svg +11 -0
- package/assets/streets/icons/christian-dark.svg +11 -0
- package/assets/streets/icons/christian-monochrome-dark.svg +11 -0
- package/assets/streets/icons/christian-monochrome.svg +11 -0
- package/assets/streets/icons/christian.svg +11 -0
- package/assets/streets/icons/cinema-dark.svg +11 -0
- package/assets/streets/icons/cinema-monochrome-dark.svg +11 -0
- package/assets/streets/icons/cinema-monochrome.svg +11 -0
- package/assets/streets/icons/cinema.svg +11 -0
- package/assets/streets/icons/clothing-dark.svg +11 -0
- package/assets/streets/icons/clothing-monochrome-dark.svg +11 -0
- package/assets/streets/icons/clothing-monochrome.svg +11 -0
- package/assets/streets/icons/clothing.svg +11 -0
- package/assets/streets/icons/coffee-dark.svg +11 -0
- package/assets/streets/icons/coffee-monochrome-dark.svg +11 -0
- package/assets/streets/icons/coffee-monochrome.svg +11 -0
- package/assets/streets/icons/coffee.svg +4 -5
- package/assets/streets/icons/college-dark.svg +11 -0
- package/assets/streets/icons/college-monochrome-dark.svg +11 -0
- package/assets/streets/icons/college-monochrome.svg +11 -0
- package/assets/streets/icons/college.svg +11 -0
- package/assets/streets/icons/community-dark.svg +11 -0
- package/assets/streets/icons/community-monochrome-dark.svg +11 -0
- package/assets/streets/icons/community-monochrome.svg +11 -0
- package/assets/streets/icons/community.svg +11 -0
- package/assets/streets/icons/convenience-dark.svg +11 -0
- package/assets/streets/icons/convenience-monochrome-dark.svg +11 -0
- package/assets/streets/icons/convenience-monochrome.svg +11 -0
- package/assets/streets/icons/convenience.svg +11 -0
- package/assets/streets/icons/culture-dark.svg +11 -0
- package/assets/streets/icons/culture-monochrome-dark.svg +11 -0
- package/assets/streets/icons/culture-monochrome.svg +11 -0
- package/assets/streets/icons/culture.svg +4 -5
- package/assets/streets/icons/dentist-dark.svg +11 -0
- package/assets/streets/icons/dentist-monochrome-dark.svg +11 -0
- package/assets/streets/icons/dentist-monochrome.svg +11 -0
- package/assets/streets/icons/dentist.svg +11 -0
- package/assets/streets/icons/doctor-dark.svg +11 -0
- package/assets/streets/icons/doctor-monochrome-dark.svg +11 -0
- package/assets/streets/icons/doctor-monochrome.svg +11 -0
- package/assets/streets/icons/doctor.svg +11 -0
- package/assets/streets/icons/dog-park-dark.svg +11 -0
- package/assets/streets/icons/dog-park-monochrome-dark.svg +11 -0
- package/assets/streets/icons/dog-park-monochrome.svg +11 -0
- package/assets/streets/icons/dog-park.svg +11 -0
- package/assets/streets/icons/drinking-water-dark.svg +11 -0
- package/assets/streets/icons/drinking-water-monochrome-dark.svg +11 -0
- package/assets/streets/icons/drinking-water-monochrome.svg +11 -0
- package/assets/streets/icons/drinking-water.svg +11 -0
- package/assets/streets/icons/education-dark.svg +11 -0
- package/assets/streets/icons/education-monochrome-dark.svg +11 -0
- package/assets/streets/icons/education-monochrome.svg +11 -0
- package/assets/streets/icons/education.svg +5 -6
- package/assets/streets/icons/electronics-dark.svg +11 -0
- package/assets/streets/icons/electronics-monochrome-dark.svg +11 -0
- package/assets/streets/icons/electronics-monochrome.svg +11 -0
- package/assets/streets/icons/electronics.svg +11 -0
- package/assets/streets/icons/embassy-dark.svg +11 -0
- package/assets/streets/icons/embassy-monochrome-dark.svg +11 -0
- package/assets/streets/icons/embassy-monochrome.svg +11 -0
- package/assets/streets/icons/embassy.svg +11 -0
- package/assets/streets/icons/entertainment-dark.svg +11 -0
- package/assets/streets/icons/entertainment-monochrome-dark.svg +11 -0
- package/assets/streets/icons/entertainment-monochrome.svg +11 -0
- package/assets/streets/icons/entertainment.svg +11 -0
- package/assets/streets/icons/fast-food-dark.svg +11 -0
- package/assets/streets/icons/fast-food-monochrome-dark.svg +11 -0
- package/assets/streets/icons/fast-food-monochrome.svg +11 -0
- package/assets/streets/icons/fast-food.svg +11 -0
- package/assets/streets/icons/ferry-dark.svg +11 -0
- package/assets/streets/icons/ferry-monochrome-dark.svg +11 -0
- package/assets/streets/icons/ferry-monochrome.svg +11 -0
- package/assets/streets/icons/ferry.svg +11 -0
- package/assets/streets/icons/fire-station-dark.svg +11 -0
- package/assets/streets/icons/fire-station-monochrome-dark.svg +11 -0
- package/assets/streets/icons/fire-station-monochrome.svg +11 -0
- package/assets/streets/icons/fire-station.svg +11 -0
- package/assets/streets/icons/fitness-dark.svg +11 -0
- package/assets/streets/icons/fitness-monochrome-dark.svg +11 -0
- package/assets/streets/icons/fitness-monochrome.svg +11 -0
- package/assets/streets/icons/fitness.svg +11 -0
- package/assets/streets/icons/florist-dark.svg +11 -0
- package/assets/streets/icons/florist-monochrome-dark.svg +11 -0
- package/assets/streets/icons/florist-monochrome.svg +11 -0
- package/assets/streets/icons/florist.svg +11 -0
- package/assets/streets/icons/food-dark.svg +11 -0
- package/assets/streets/icons/food-monochrome-dark.svg +11 -0
- package/assets/streets/icons/food-monochrome.svg +11 -0
- package/assets/streets/icons/food.svg +4 -5
- package/assets/streets/icons/fuel-dark.svg +11 -0
- package/assets/streets/icons/fuel-monochrome-dark.svg +11 -0
- package/assets/streets/icons/fuel-monochrome.svg +11 -0
- package/assets/streets/icons/fuel.svg +11 -0
- package/assets/streets/icons/garden-dark.svg +11 -0
- package/assets/streets/icons/garden-monochrome-dark.svg +11 -0
- package/assets/streets/icons/garden-monochrome.svg +11 -0
- package/assets/streets/icons/garden.svg +11 -0
- package/assets/streets/icons/golf-dark.svg +11 -0
- package/assets/streets/icons/golf-monochrome-dark.svg +11 -0
- package/assets/streets/icons/golf-monochrome.svg +11 -0
- package/assets/streets/icons/golf.svg +11 -0
- package/assets/streets/icons/grocery-dark.svg +11 -0
- package/assets/streets/icons/grocery-monochrome-dark.svg +11 -0
- package/assets/streets/icons/grocery-monochrome.svg +11 -0
- package/assets/streets/icons/grocery.svg +11 -0
- package/assets/streets/icons/harbor-dark.svg +11 -0
- package/assets/streets/icons/harbor-monochrome-dark.svg +11 -0
- package/assets/streets/icons/harbor-monochrome.svg +11 -0
- package/assets/streets/icons/harbor.svg +11 -0
- package/assets/streets/icons/hardware-dark.svg +11 -0
- package/assets/streets/icons/hardware-monochrome-dark.svg +11 -0
- package/assets/streets/icons/hardware-monochrome.svg +11 -0
- package/assets/streets/icons/hardware.svg +11 -0
- package/assets/streets/icons/health-dark.svg +11 -0
- package/assets/streets/icons/health-monochrome-dark.svg +11 -0
- package/assets/streets/icons/health-monochrome.svg +11 -0
- package/assets/streets/icons/health.svg +4 -5
- package/assets/streets/icons/historic-dark.svg +11 -0
- package/assets/streets/icons/historic-monochrome-dark.svg +11 -0
- package/assets/streets/icons/historic-monochrome.svg +11 -0
- package/assets/streets/icons/historic.svg +11 -0
- package/assets/streets/icons/jewish-dark.svg +11 -0
- package/assets/streets/icons/jewish-monochrome-dark.svg +11 -0
- package/assets/streets/icons/jewish-monochrome.svg +11 -0
- package/assets/streets/icons/jewish.svg +11 -0
- package/assets/streets/icons/landmark-dark.svg +11 -0
- package/assets/streets/icons/landmark-monochrome-dark.svg +11 -0
- package/assets/streets/icons/landmark-monochrome.svg +11 -0
- package/assets/streets/icons/landmark.svg +11 -0
- package/assets/streets/icons/laundry-dark.svg +11 -0
- package/assets/streets/icons/laundry-monochrome-dark.svg +11 -0
- package/assets/streets/icons/laundry-monochrome.svg +11 -0
- package/assets/streets/icons/laundry.svg +11 -0
- package/assets/streets/icons/library-dark.svg +11 -0
- package/assets/streets/icons/library-monochrome-dark.svg +11 -0
- package/assets/streets/icons/library-monochrome.svg +11 -0
- package/assets/streets/icons/library.svg +11 -0
- package/assets/streets/icons/lodging-dark.svg +11 -0
- package/assets/streets/icons/lodging-monochrome-dark.svg +11 -0
- package/assets/streets/icons/lodging-monochrome.svg +11 -0
- package/assets/streets/icons/lodging.svg +3 -4
- package/assets/streets/icons/major-transit-dark.svg +11 -0
- package/assets/streets/icons/major-transit-monochrome-dark.svg +11 -0
- package/assets/streets/icons/major-transit-monochrome.svg +11 -0
- package/assets/streets/icons/major-transit.svg +4 -5
- package/assets/streets/icons/monument-dark.svg +11 -0
- package/assets/streets/icons/monument-monochrome-dark.svg +11 -0
- package/assets/streets/icons/monument-monochrome.svg +11 -0
- package/assets/streets/icons/monument.svg +11 -0
- package/assets/streets/icons/mountain-dark.svg +11 -0
- package/assets/streets/icons/mountain-monochrome-dark.svg +11 -0
- package/assets/streets/icons/mountain-monochrome.svg +11 -0
- package/assets/streets/icons/mountain.svg +11 -0
- package/assets/streets/icons/music-dark.svg +11 -0
- package/assets/streets/icons/music-monochrome-dark.svg +11 -0
- package/assets/streets/icons/music-monochrome.svg +11 -0
- package/assets/streets/icons/music.svg +11 -0
- package/assets/streets/icons/muslim-dark.svg +11 -0
- package/assets/streets/icons/muslim-monochrome-dark.svg +11 -0
- package/assets/streets/icons/muslim-monochrome.svg +11 -0
- package/assets/streets/icons/muslim.svg +11 -0
- package/assets/streets/icons/natural-dark.svg +11 -0
- package/assets/streets/icons/natural-monochrome-dark.svg +11 -0
- package/assets/streets/icons/natural-monochrome.svg +11 -0
- package/assets/streets/icons/natural.svg +11 -0
- package/assets/streets/icons/nature-dark.svg +11 -0
- package/assets/streets/icons/nature-monochrome-dark.svg +11 -0
- package/assets/streets/icons/nature-monochrome.svg +11 -0
- package/assets/streets/icons/nature.svg +11 -0
- package/assets/streets/icons/nightclub-dark.svg +11 -0
- package/assets/streets/icons/nightclub-monochrome-dark.svg +11 -0
- package/assets/streets/icons/nightclub-monochrome.svg +11 -0
- package/assets/streets/icons/nightclub.svg +11 -0
- package/assets/streets/icons/parking-dark.svg +11 -0
- package/assets/streets/icons/parking-garage-dark.svg +11 -0
- package/assets/streets/icons/parking-garage-monochrome-dark.svg +11 -0
- package/assets/streets/icons/parking-garage-monochrome.svg +11 -0
- package/assets/streets/icons/parking-garage.svg +11 -0
- package/assets/streets/icons/parking-monochrome-dark.svg +11 -0
- package/assets/streets/icons/parking-monochrome.svg +11 -0
- package/assets/streets/icons/parking.svg +3 -4
- package/assets/streets/icons/pharmacy-dark.svg +11 -0
- package/assets/streets/icons/pharmacy-monochrome-dark.svg +11 -0
- package/assets/streets/icons/pharmacy-monochrome.svg +11 -0
- package/assets/streets/icons/pharmacy.svg +11 -0
- package/assets/streets/icons/playground-dark.svg +11 -0
- package/assets/streets/icons/playground-monochrome-dark.svg +11 -0
- package/assets/streets/icons/playground-monochrome.svg +11 -0
- package/assets/streets/icons/playground.svg +11 -0
- package/assets/streets/icons/plaza-dark.svg +11 -0
- package/assets/streets/icons/plaza-monochrome-dark.svg +11 -0
- package/assets/streets/icons/plaza-monochrome.svg +11 -0
- package/assets/streets/icons/plaza.svg +11 -0
- package/assets/streets/icons/police-dark.svg +11 -0
- package/assets/streets/icons/police-monochrome-dark.svg +11 -0
- package/assets/streets/icons/police-monochrome.svg +11 -0
- package/assets/streets/icons/police.svg +11 -0
- package/assets/streets/icons/post-dark.svg +11 -0
- package/assets/streets/icons/post-monochrome-dark.svg +11 -0
- package/assets/streets/icons/post-monochrome.svg +11 -0
- package/assets/streets/icons/post.svg +11 -0
- package/assets/streets/icons/prison-dark.svg +11 -0
- package/assets/streets/icons/prison-monochrome-dark.svg +11 -0
- package/assets/streets/icons/prison-monochrome.svg +11 -0
- package/assets/streets/icons/prison.svg +11 -0
- package/assets/streets/icons/rail-dark.svg +11 -0
- package/assets/streets/icons/rail-light-dark.svg +11 -0
- package/assets/streets/icons/rail-light-monochrome-dark.svg +11 -0
- package/assets/streets/icons/rail-light-monochrome.svg +11 -0
- package/assets/streets/icons/rail-light.svg +11 -0
- package/assets/streets/icons/rail-monochrome-dark.svg +11 -0
- package/assets/streets/icons/rail-monochrome.svg +11 -0
- package/assets/streets/icons/rail.svg +11 -0
- package/assets/streets/icons/services-dark.svg +11 -0
- package/assets/streets/icons/services-monochrome-dark.svg +11 -0
- package/assets/streets/icons/services-monochrome.svg +11 -0
- package/assets/streets/icons/services.svg +4 -5
- package/assets/streets/icons/shopping-dark.svg +11 -0
- package/assets/streets/icons/shopping-monochrome-dark.svg +11 -0
- package/assets/streets/icons/shopping-monochrome.svg +11 -0
- package/assets/streets/icons/shopping.svg +4 -5
- package/assets/streets/icons/sidewalk-dot-dark.svg +1 -1
- package/assets/streets/icons/sidewalk-dot.svg +1 -1
- package/assets/streets/icons/sport-dark.svg +11 -0
- package/assets/streets/icons/sport-monochrome-dark.svg +11 -0
- package/assets/streets/icons/sport-monochrome.svg +11 -0
- package/assets/streets/icons/sport.svg +11 -0
- package/assets/streets/icons/stadium-dark.svg +11 -0
- package/assets/streets/icons/stadium-monochrome-dark.svg +11 -0
- package/assets/streets/icons/stadium-monochrome.svg +11 -0
- package/assets/streets/icons/stadium.svg +11 -0
- package/assets/streets/icons/street-art-dark.svg +11 -0
- package/assets/streets/icons/street-art-monochrome-dark.svg +11 -0
- package/assets/streets/icons/street-art-monochrome.svg +11 -0
- package/assets/streets/icons/street-art.svg +11 -0
- package/assets/streets/icons/streets-tree-columnar-dark.pattern.svg +108 -0
- package/assets/streets/icons/streets-tree-columnar.pattern.svg +108 -0
- package/assets/streets/icons/streets-tree-conifer-dark.pattern.svg +57 -0
- package/assets/streets/icons/streets-tree-conifer.pattern.svg +57 -0
- package/assets/streets/icons/streets-tree-open-dark.pattern.svg +108 -0
- package/assets/streets/icons/streets-tree-open.pattern.svg +108 -0
- package/assets/streets/icons/streets-tree-palm-fan-dark.pattern.svg +108 -0
- package/assets/streets/icons/streets-tree-palm-fan.pattern.svg +108 -0
- package/assets/streets/icons/streets-tree-palm-feather-dark.pattern.svg +305 -0
- package/assets/streets/icons/streets-tree-palm-feather.pattern.svg +305 -0
- package/assets/streets/icons/streets-tree-round-dark.pattern.svg +108 -0
- package/assets/streets/icons/streets-tree-round.pattern.svg +108 -0
- package/assets/streets/icons/streets-tree-tall-dark.pattern.svg +108 -0
- package/assets/streets/icons/streets-tree-tall.pattern.svg +108 -0
- package/assets/streets/icons/swimming-dark.svg +11 -0
- package/assets/streets/icons/swimming-monochrome-dark.svg +11 -0
- package/assets/streets/icons/swimming-monochrome.svg +11 -0
- package/assets/streets/icons/swimming.svg +11 -0
- package/assets/streets/icons/theatre-dark.svg +11 -0
- package/assets/streets/icons/theatre-monochrome-dark.svg +11 -0
- package/assets/streets/icons/theatre-monochrome.svg +11 -0
- package/assets/streets/icons/theatre.svg +11 -0
- package/assets/streets/icons/toilet-dark.svg +11 -0
- package/assets/streets/icons/toilet-monochrome-dark.svg +11 -0
- package/assets/streets/icons/toilet-monochrome.svg +11 -0
- package/assets/streets/icons/toilet.svg +11 -0
- package/assets/streets/icons/town-hall-dark.svg +11 -0
- package/assets/streets/icons/town-hall-monochrome-dark.svg +11 -0
- package/assets/streets/icons/town-hall-monochrome.svg +11 -0
- package/assets/streets/icons/town-hall.svg +11 -0
- package/assets/streets/icons/viewpoint-dark.svg +11 -0
- package/assets/streets/icons/viewpoint-monochrome-dark.svg +11 -0
- package/assets/streets/icons/viewpoint-monochrome.svg +11 -0
- package/assets/streets/icons/viewpoint.svg +11 -0
- package/assets/streets/icons/waterfall-dark.svg +11 -0
- package/assets/streets/icons/waterfall-monochrome-dark.svg +11 -0
- package/assets/streets/icons/waterfall-monochrome.svg +11 -0
- package/assets/streets/icons/waterfall.svg +11 -0
- package/assets/streets/icons/worship-dark.svg +11 -0
- package/assets/streets/icons/worship-monochrome-dark.svg +11 -0
- package/assets/streets/icons/worship-monochrome.svg +11 -0
- package/assets/streets/icons/worship.svg +11 -0
- package/assets/streets/icons/zoo-dark.svg +11 -0
- package/assets/streets/icons/zoo-monochrome-dark.svg +11 -0
- package/assets/streets/icons/zoo-monochrome.svg +11 -0
- package/assets/streets/icons/zoo.svg +11 -0
- package/assets/streets/models/streets-tree-columnar.far.glb +0 -0
- package/assets/streets/models/streets-tree-columnar.glb +0 -0
- package/assets/streets/models/streets-tree-conifer.far.glb +0 -0
- package/assets/streets/models/streets-tree-conifer.glb +0 -0
- package/assets/streets/models/streets-tree-open.far.glb +0 -0
- package/assets/streets/models/streets-tree-open.glb +0 -0
- package/assets/streets/models/streets-tree-palm-fan.far.glb +0 -0
- package/assets/streets/models/streets-tree-palm-fan.glb +0 -0
- package/assets/streets/models/streets-tree-palm-feather.far.glb +0 -0
- package/assets/streets/models/streets-tree-palm-feather.glb +0 -0
- package/assets/streets/models/streets-tree-round.far.glb +0 -0
- package/assets/streets/models/streets-tree-round.glb +0 -0
- package/assets/streets/models/streets-tree-tall.far.glb +0 -0
- package/assets/streets/models/streets-tree-tall.glb +0 -0
- package/dist/index.d.ts +87 -7
- package/dist/index.js +1638 -766
- package/docs/design-and-assets.md +35 -14
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -25,6 +25,7 @@ function packageDirectory(path) {
|
|
|
25
25
|
return Object.freeze({ kind: "package-directory", package: "@tileflow/maps", path });
|
|
26
26
|
}
|
|
27
27
|
var streetsIcons = packageDirectory("assets/streets/icons");
|
|
28
|
+
var streetsModels = packageDirectory("assets/streets/models");
|
|
28
29
|
var ferrarisIcons = packageDirectory("assets/ferraris/icons");
|
|
29
30
|
var baedekerIcons = packageDirectory("assets/baedeker/icons");
|
|
30
31
|
var civicaIcons = packageDirectory("assets/civica/icons");
|
|
@@ -1242,7 +1243,9 @@ var baedeker = bindOfficialMapTheme(
|
|
|
1242
1243
|
icons: false,
|
|
1243
1244
|
labels: true,
|
|
1244
1245
|
minZoom: 13,
|
|
1245
|
-
|
|
1246
|
+
// Stations and landmarks use the semibold face, and a layer has one font, so each
|
|
1247
|
+
// category keeps its own layer; the categories listed first are placed first.
|
|
1248
|
+
placement: { coupleIconAndLabel: false, order: "categories", textPadding: 1 },
|
|
1246
1249
|
styles: {
|
|
1247
1250
|
transport: {
|
|
1248
1251
|
text: {
|
|
@@ -2786,13 +2789,14 @@ var blueprint = bindOfficialMapTheme(
|
|
|
2786
2789
|
}),
|
|
2787
2790
|
poi: withRenderStack2(
|
|
2788
2791
|
poi2({
|
|
2792
|
+
// Placed in this order: the primary callouts first.
|
|
2789
2793
|
categories: [
|
|
2794
|
+
"transport",
|
|
2795
|
+
"medical",
|
|
2790
2796
|
"arts-entertainment",
|
|
2791
2797
|
"education",
|
|
2792
|
-
"medical",
|
|
2793
2798
|
"park-nature",
|
|
2794
2799
|
"public-services",
|
|
2795
|
-
"transport",
|
|
2796
2800
|
"visitor-amenity"
|
|
2797
2801
|
],
|
|
2798
2802
|
color: "category",
|
|
@@ -2803,6 +2807,9 @@ var blueprint = bindOfficialMapTheme(
|
|
|
2803
2807
|
placement: {
|
|
2804
2808
|
coupleIconAndLabel: false,
|
|
2805
2809
|
iconPadding: 3,
|
|
2810
|
+
// Medical and transport callouts start earlier than the others, so each category
|
|
2811
|
+
// keeps its own layer; the categories listed first are placed first.
|
|
2812
|
+
order: "categories",
|
|
2806
2813
|
textPadding: 7
|
|
2807
2814
|
},
|
|
2808
2815
|
styles: {
|
|
@@ -2817,7 +2824,8 @@ var blueprint = bindOfficialMapTheme(
|
|
|
2817
2824
|
}),
|
|
2818
2825
|
{
|
|
2819
2826
|
architecturalCallouts: renderPass2({
|
|
2820
|
-
|
|
2827
|
+
// Above every POI label: the first category listed is the top POI layer.
|
|
2828
|
+
placement: { above: "poi.transport.label" },
|
|
2821
2829
|
feature: "poi",
|
|
2822
2830
|
renderer: "symbol",
|
|
2823
2831
|
selector: {
|
|
@@ -3432,7 +3440,7 @@ function footpath(minZoom) {
|
|
|
3432
3440
|
function wash(color, minZoom, opacity = 1) {
|
|
3433
3441
|
return { fill: { color, minZoom, opacity }, outline: { visible: false } };
|
|
3434
3442
|
}
|
|
3435
|
-
function place(minZoom, maxZoom,
|
|
3443
|
+
function place(minZoom, maxZoom, size2, options = {}) {
|
|
3436
3444
|
return {
|
|
3437
3445
|
minZoom,
|
|
3438
3446
|
maxZoom,
|
|
@@ -3447,8 +3455,8 @@ function place(minZoom, maxZoom, size, options = {}) {
|
|
|
3447
3455
|
maxWidth: 10,
|
|
3448
3456
|
padding: 5,
|
|
3449
3457
|
size: zoom3.linear([
|
|
3450
|
-
[minZoom,
|
|
3451
|
-
[Math.min(maxZoom, minZoom + 6),
|
|
3458
|
+
[minZoom, size2],
|
|
3459
|
+
[Math.min(maxZoom, minZoom + 6), size2 + 5]
|
|
3452
3460
|
]),
|
|
3453
3461
|
transform: "uppercase"
|
|
3454
3462
|
}
|
|
@@ -3477,15 +3485,14 @@ function streetName(minZoom, major = false) {
|
|
|
3477
3485
|
}
|
|
3478
3486
|
};
|
|
3479
3487
|
}
|
|
3480
|
-
function destination(
|
|
3488
|
+
function destination(image2, minZoom, color, featured = false, role = "caption") {
|
|
3481
3489
|
const park = role === "park";
|
|
3482
3490
|
const station = role === "station";
|
|
3483
3491
|
const principalPark = expr3.lte(expr3.toNumber(expr3.get(field3("poiSizeRank")), 16), 4);
|
|
3484
3492
|
return {
|
|
3485
3493
|
minZoom,
|
|
3486
|
-
density: featured ? 3 : 2,
|
|
3487
3494
|
icon: {
|
|
3488
|
-
image,
|
|
3495
|
+
image: image2,
|
|
3489
3496
|
allowOverlap: false,
|
|
3490
3497
|
ignorePlacement: false,
|
|
3491
3498
|
optional: false,
|
|
@@ -4231,7 +4238,15 @@ var civica = bindOfficialMapTheme(
|
|
|
4231
4238
|
minZoom: 12,
|
|
4232
4239
|
icons: true,
|
|
4233
4240
|
labels: true,
|
|
4234
|
-
placement: {
|
|
4241
|
+
placement: {
|
|
4242
|
+
coupleIconAndLabel: true,
|
|
4243
|
+
iconPadding: 3,
|
|
4244
|
+
// Cívica's destination schedule gives each category its own zoom range and
|
|
4245
|
+
// collision padding, so each keeps its own layer; destinations listed first are
|
|
4246
|
+
// placed first.
|
|
4247
|
+
order: "categories",
|
|
4248
|
+
textPadding: 4
|
|
4249
|
+
},
|
|
4235
4250
|
styles: {
|
|
4236
4251
|
landmark: destination("civica-poi-monument", 13, ink.type, true),
|
|
4237
4252
|
"arts-entertainment": destination("civica-poi-museum", 13.5, ink.type, true),
|
|
@@ -8427,24 +8442,23 @@ var soundings = bindOfficialMapTheme(
|
|
|
8427
8442
|
|
|
8428
8443
|
// src/official/streets.ts
|
|
8429
8444
|
import {
|
|
8445
|
+
addresses as addresses4,
|
|
8430
8446
|
boundaries as boundaries8,
|
|
8431
8447
|
buildings as buildings7,
|
|
8432
8448
|
defineMap as defineMap8,
|
|
8433
|
-
|
|
8434
|
-
|
|
8435
|
-
field as field8,
|
|
8449
|
+
expr as expr11,
|
|
8450
|
+
field as field10,
|
|
8436
8451
|
fixed as fixed3,
|
|
8437
8452
|
labels as labels8,
|
|
8438
8453
|
land as land8,
|
|
8439
8454
|
poi as poi4,
|
|
8440
8455
|
refineRenderTarget as refineRenderTarget3,
|
|
8441
|
-
renderPass as
|
|
8456
|
+
renderPass as renderPass9,
|
|
8442
8457
|
roads as roads7,
|
|
8443
8458
|
transit as transit8,
|
|
8444
|
-
vegetation as vegetation6,
|
|
8445
8459
|
water as water8,
|
|
8446
|
-
withRenderStack as
|
|
8447
|
-
zoom as
|
|
8460
|
+
withRenderStack as withRenderStack9,
|
|
8461
|
+
zoom as zoom10
|
|
8448
8462
|
} from "@tileflow/core";
|
|
8449
8463
|
|
|
8450
8464
|
// src/official/mapbox-rail.ts
|
|
@@ -8508,28 +8522,328 @@ function mapboxRailTransitStyle(color) {
|
|
|
8508
8522
|
};
|
|
8509
8523
|
}
|
|
8510
8524
|
|
|
8525
|
+
// src/official/streets-poi.ts
|
|
8526
|
+
import {
|
|
8527
|
+
expr as expr9,
|
|
8528
|
+
field as field8,
|
|
8529
|
+
token as token4
|
|
8530
|
+
} from "@tileflow/core";
|
|
8531
|
+
var streetsPoiDiscColors = Object.freeze({
|
|
8532
|
+
light: {
|
|
8533
|
+
"arts-entertainment": "#F37CCC",
|
|
8534
|
+
education: "#BF803F",
|
|
8535
|
+
"food-drink": "#FF9933",
|
|
8536
|
+
landmark: "#F37CCC",
|
|
8537
|
+
lodging: "#8D73E6",
|
|
8538
|
+
medical: "#F46A75",
|
|
8539
|
+
"park-nature": "#36AD1F",
|
|
8540
|
+
parking: "#5474D5",
|
|
8541
|
+
"public-services": "#7D8F9F",
|
|
8542
|
+
religion: "#7D8F9F",
|
|
8543
|
+
retail: "#5FA0E5",
|
|
8544
|
+
"sport-leisure": "#4BB5C3",
|
|
8545
|
+
transport: "#465DCD",
|
|
8546
|
+
"visitor-amenity": "#7D8F9F"
|
|
8547
|
+
},
|
|
8548
|
+
dark: {
|
|
8549
|
+
"arts-entertainment": "#C786BC",
|
|
8550
|
+
education: "#B6A783",
|
|
8551
|
+
"food-drink": "#D8BD65",
|
|
8552
|
+
landmark: "#C786BC",
|
|
8553
|
+
lodging: "#AA94DA",
|
|
8554
|
+
medical: "#DC7C89",
|
|
8555
|
+
"park-nature": "#89B871",
|
|
8556
|
+
parking: "#94BCE3",
|
|
8557
|
+
"public-services": "#9DAAB0",
|
|
8558
|
+
religion: "#9DAAB0",
|
|
8559
|
+
retail: "#94BCE3",
|
|
8560
|
+
"sport-leisure": "#89B871",
|
|
8561
|
+
transport: "#8296E6",
|
|
8562
|
+
"visitor-amenity": "#9DAAB0"
|
|
8563
|
+
}
|
|
8564
|
+
});
|
|
8565
|
+
var streetsPoiPictograms = Object.freeze({
|
|
8566
|
+
"major-transit": { category: "transport", maki: "rail-metro", title: "Metro" },
|
|
8567
|
+
rail: { category: "transport", maki: "rail", title: "Railway station" },
|
|
8568
|
+
"rail-light": { category: "transport", maki: "rail-light", title: "Tram or light rail" },
|
|
8569
|
+
bus: { category: "transport", maki: "bus", title: "Bus" },
|
|
8570
|
+
ferry: { category: "transport", maki: "ferry", title: "Ferry" },
|
|
8571
|
+
aerialway: { category: "transport", maki: "aerialway", title: "Aerial cableway" },
|
|
8572
|
+
airport: { category: "transport", maki: "airport", title: "Airport" },
|
|
8573
|
+
food: { category: "food-drink", maki: "restaurant", title: "Restaurant" },
|
|
8574
|
+
coffee: { category: "food-drink", maki: "cafe", title: "Cafe" },
|
|
8575
|
+
bar: { category: "food-drink", maki: "bar", title: "Bar" },
|
|
8576
|
+
"fast-food": { category: "food-drink", maki: "fast-food", title: "Fast food" },
|
|
8577
|
+
entertainment: { category: "arts-entertainment", maki: "star", title: "Entertainment venue" },
|
|
8578
|
+
culture: { category: "arts-entertainment", maki: "museum", title: "Museum" },
|
|
8579
|
+
"art-gallery": { category: "arts-entertainment", maki: "art-gallery", title: "Art gallery" },
|
|
8580
|
+
theatre: { category: "arts-entertainment", maki: "theatre", title: "Theatre" },
|
|
8581
|
+
cinema: { category: "arts-entertainment", maki: "cinema", title: "Cinema" },
|
|
8582
|
+
music: { category: "arts-entertainment", maki: "music", title: "Music venue" },
|
|
8583
|
+
nightclub: { category: "arts-entertainment", maki: "nightclub", title: "Nightclub" },
|
|
8584
|
+
zoo: { category: "arts-entertainment", maki: "zoo", title: "Zoo" },
|
|
8585
|
+
aquarium: { category: "arts-entertainment", maki: "aquarium", title: "Aquarium" },
|
|
8586
|
+
"amusement-park": {
|
|
8587
|
+
category: "arts-entertainment",
|
|
8588
|
+
maki: "amusement-park",
|
|
8589
|
+
title: "Amusement park"
|
|
8590
|
+
},
|
|
8591
|
+
casino: { category: "arts-entertainment", maki: "casino", title: "Casino" },
|
|
8592
|
+
landmark: { category: "landmark", maki: "landmark", title: "Landmark" },
|
|
8593
|
+
monument: { category: "landmark", maki: "monument", title: "Monument" },
|
|
8594
|
+
castle: { category: "landmark", maki: "castle", title: "Castle" },
|
|
8595
|
+
historic: { category: "landmark", maki: "historic", title: "Historic site" },
|
|
8596
|
+
viewpoint: { category: "landmark", maki: "viewpoint", title: "Viewpoint" },
|
|
8597
|
+
cemetery: { category: "landmark", maki: "cemetery", title: "Cemetery" },
|
|
8598
|
+
"street-art": { category: "landmark", maki: "paint", title: "Street art" },
|
|
8599
|
+
lodging: { category: "lodging", maki: "lodging", title: "Lodging" },
|
|
8600
|
+
campsite: { category: "lodging", maki: "campsite", title: "Campsite" },
|
|
8601
|
+
health: { category: "medical", maki: "hospital", title: "Hospital" },
|
|
8602
|
+
doctor: { category: "medical", maki: "doctor", title: "Clinic" },
|
|
8603
|
+
dentist: { category: "medical", maki: "dentist", title: "Dentist" },
|
|
8604
|
+
pharmacy: { category: "medical", maki: "pharmacy", title: "Pharmacy" },
|
|
8605
|
+
nature: { category: "park-nature", maki: "park", title: "Park" },
|
|
8606
|
+
garden: { category: "park-nature", maki: "garden", title: "Garden" },
|
|
8607
|
+
playground: { category: "park-nature", maki: "playground", title: "Playground" },
|
|
8608
|
+
"dog-park": { category: "park-nature", maki: "dog-park", title: "Dog park" },
|
|
8609
|
+
beach: { category: "park-nature", maki: "beach", title: "Beach" },
|
|
8610
|
+
mountain: { category: "park-nature", maki: "mountain", title: "Mountain" },
|
|
8611
|
+
waterfall: { category: "park-nature", maki: "waterfall", title: "Waterfall" },
|
|
8612
|
+
natural: { category: "park-nature", maki: "natural", title: "Natural feature" },
|
|
8613
|
+
"town-hall": { category: "public-services", maki: "town-hall", title: "Government" },
|
|
8614
|
+
police: { category: "public-services", maki: "police", title: "Police" },
|
|
8615
|
+
"fire-station": { category: "public-services", maki: "fire-station", title: "Fire station" },
|
|
8616
|
+
post: { category: "public-services", maki: "post", title: "Post office" },
|
|
8617
|
+
embassy: { category: "public-services", maki: "embassy", title: "Embassy" },
|
|
8618
|
+
prison: { category: "public-services", maki: "prison", title: "Prison" },
|
|
8619
|
+
community: { category: "public-services", maki: "building", title: "Community center" },
|
|
8620
|
+
plaza: { category: "public-services", maki: "landmark", title: "Public square" },
|
|
8621
|
+
worship: { category: "religion", maki: "place-of-worship", title: "Place of worship" },
|
|
8622
|
+
christian: { category: "religion", maki: "religious-christian", title: "Church" },
|
|
8623
|
+
muslim: { category: "religion", maki: "religious-muslim", title: "Mosque" },
|
|
8624
|
+
jewish: { category: "religion", maki: "religious-jewish", title: "Synagogue" },
|
|
8625
|
+
buddhist: { category: "religion", maki: "religious-buddhist", title: "Buddhist temple" },
|
|
8626
|
+
shopping: { category: "retail", maki: "shop", title: "Shop" },
|
|
8627
|
+
clothing: { category: "retail", maki: "clothing-store", title: "Clothing store" },
|
|
8628
|
+
grocery: { category: "retail", maki: "grocery", title: "Grocery" },
|
|
8629
|
+
convenience: { category: "retail", maki: "convenience", title: "Convenience store" },
|
|
8630
|
+
car: { category: "retail", maki: "car", title: "Car dealer" },
|
|
8631
|
+
"car-repair": { category: "retail", maki: "car-repair", title: "Car parts" },
|
|
8632
|
+
bookstore: { category: "retail", maki: "library", title: "Bookstore" },
|
|
8633
|
+
florist: { category: "retail", maki: "florist", title: "Florist" },
|
|
8634
|
+
hardware: { category: "retail", maki: "hardware", title: "Hardware store" },
|
|
8635
|
+
electronics: { category: "retail", maki: "mobile-phone", title: "Electronics store" },
|
|
8636
|
+
beauty: { category: "retail", maki: "hairdresser", title: "Beauty" },
|
|
8637
|
+
sport: { category: "sport-leisure", maki: "soccer", title: "Sport" },
|
|
8638
|
+
stadium: { category: "sport-leisure", maki: "stadium", title: "Stadium" },
|
|
8639
|
+
golf: { category: "sport-leisure", maki: "golf", title: "Golf course" },
|
|
8640
|
+
swimming: { category: "sport-leisure", maki: "swimming", title: "Swimming pool" },
|
|
8641
|
+
fitness: { category: "sport-leisure", maki: "fitness-centre", title: "Fitness" },
|
|
8642
|
+
services: { category: "visitor-amenity", maki: "information", title: "Information" },
|
|
8643
|
+
parking: { category: "visitor-amenity", disc: "parking", maki: "parking", title: "Parking" },
|
|
8644
|
+
"parking-garage": {
|
|
8645
|
+
category: "visitor-amenity",
|
|
8646
|
+
disc: "parking",
|
|
8647
|
+
maki: "parking-garage",
|
|
8648
|
+
title: "Parking garage"
|
|
8649
|
+
},
|
|
8650
|
+
toilet: { category: "visitor-amenity", maki: "toilet", title: "Toilets" },
|
|
8651
|
+
bank: { category: "visitor-amenity", maki: "bank", title: "Bank or cash machine" },
|
|
8652
|
+
fuel: { category: "visitor-amenity", maki: "fuel", title: "Fuel" },
|
|
8653
|
+
"charging-station": {
|
|
8654
|
+
category: "visitor-amenity",
|
|
8655
|
+
maki: "charging-station",
|
|
8656
|
+
title: "Charging station"
|
|
8657
|
+
},
|
|
8658
|
+
"drinking-water": { category: "visitor-amenity", maki: "drinking-water", title: "Drinking water" },
|
|
8659
|
+
harbor: { category: "visitor-amenity", maki: "harbor", title: "Marina" },
|
|
8660
|
+
laundry: { category: "visitor-amenity", maki: "laundry", title: "Laundry" },
|
|
8661
|
+
education: { category: "education", maki: "college", title: "Education" },
|
|
8662
|
+
college: { category: "education", maki: "college", title: "College or university" },
|
|
8663
|
+
library: { category: "education", maki: "library", title: "Library" }
|
|
8664
|
+
});
|
|
8665
|
+
var pictogramsByMode = {
|
|
8666
|
+
"major-transit": ["subway"],
|
|
8667
|
+
rail: ["train", "funicular"],
|
|
8668
|
+
"rail-light": ["light_rail", "tram", "monorail"],
|
|
8669
|
+
bus: ["bus"],
|
|
8670
|
+
ferry: ["ferry"],
|
|
8671
|
+
aerialway: ["aerialway"]
|
|
8672
|
+
};
|
|
8673
|
+
var pictogramsByType = {
|
|
8674
|
+
airport: ["airport"],
|
|
8675
|
+
bus: ["bus_station", "bus_stop"],
|
|
8676
|
+
ferry: ["ferry_terminal"],
|
|
8677
|
+
rail: ["train_station"],
|
|
8678
|
+
"rail-light": ["tram_stop"],
|
|
8679
|
+
bar: ["alcoholic_beverage_venue", "bar", "brewery", "distillery", "lounge", "winery"],
|
|
8680
|
+
coffee: ["cafe", "coffee_shop", "non_alcoholic_beverage_venue", "smoothie_juice_bar"],
|
|
8681
|
+
"fast-food": ["fast_food_restaurant", "food_court", "food_truck_stand"],
|
|
8682
|
+
culture: ["museum", "planetarium", "science_attraction"],
|
|
8683
|
+
"art-gallery": ["art_gallery", "arts_and_crafts_space"],
|
|
8684
|
+
theatre: ["comedy_club", "performing_arts_venue", "theatre_venue"],
|
|
8685
|
+
cinema: ["movie_theater"],
|
|
8686
|
+
music: ["music_venue"],
|
|
8687
|
+
nightclub: ["dance_club"],
|
|
8688
|
+
zoo: ["animal_attraction", "zoo"],
|
|
8689
|
+
aquarium: ["aquarium"],
|
|
8690
|
+
"amusement-park": ["amusement_attraction", "amusement_park", "fairgrounds"],
|
|
8691
|
+
casino: ["casino"],
|
|
8692
|
+
monument: ["monument", "sculpture_statue"],
|
|
8693
|
+
castle: ["castle"],
|
|
8694
|
+
historic: ["historic_site"],
|
|
8695
|
+
viewpoint: ["scenic_viewpoint"],
|
|
8696
|
+
cemetery: ["cemetery"],
|
|
8697
|
+
"street-art": ["street_art"],
|
|
8698
|
+
campsite: ["campground", "rv_park"],
|
|
8699
|
+
health: [
|
|
8700
|
+
"emergency_department",
|
|
8701
|
+
"emergency_or_urgent_care_facility",
|
|
8702
|
+
"hospital",
|
|
8703
|
+
"specialty_hospital"
|
|
8704
|
+
],
|
|
8705
|
+
dentist: ["dental_clinic"],
|
|
8706
|
+
pharmacy: ["pharmacy"],
|
|
8707
|
+
garden: ["garden"],
|
|
8708
|
+
playground: ["playground"],
|
|
8709
|
+
"dog-park": ["dog_park"],
|
|
8710
|
+
beach: ["beach"],
|
|
8711
|
+
mountain: ["mountain"],
|
|
8712
|
+
waterfall: ["waterfall"],
|
|
8713
|
+
natural: ["canyon", "hot_springs", "island", "valley"],
|
|
8714
|
+
police: ["police_station", "public_safety_service"],
|
|
8715
|
+
"fire-station": ["fire_station"],
|
|
8716
|
+
post: ["post_office"],
|
|
8717
|
+
embassy: ["embassy"],
|
|
8718
|
+
prison: ["jail_or_prison"],
|
|
8719
|
+
community: ["community_center", "food_bank", "social_or_community_service"],
|
|
8720
|
+
plaza: ["public_plaza"],
|
|
8721
|
+
christian: ["christian_place_of_worship"],
|
|
8722
|
+
muslim: ["muslim_place_of_worship"],
|
|
8723
|
+
jewish: ["jewish_place_of_worship"],
|
|
8724
|
+
buddhist: ["buddhist_place_of_worship"],
|
|
8725
|
+
clothing: ["fashion_and_apparel_store"],
|
|
8726
|
+
grocery: [
|
|
8727
|
+
"farmers_market",
|
|
8728
|
+
"food_and_beverage_store",
|
|
8729
|
+
"market",
|
|
8730
|
+
"superstore",
|
|
8731
|
+
"warehouse_club_store"
|
|
8732
|
+
],
|
|
8733
|
+
convenience: ["convenience_store", "kiosk"],
|
|
8734
|
+
car: ["auto_dealer", "vehicle_dealer"],
|
|
8735
|
+
"car-repair": ["vehicle_parts_store"],
|
|
8736
|
+
bookstore: ["books_music_and_video_store"],
|
|
8737
|
+
florist: ["flowers_and_gifts_store"],
|
|
8738
|
+
hardware: ["hardware_home_and_garden_store"],
|
|
8739
|
+
electronics: ["electronics_store"],
|
|
8740
|
+
beauty: ["personal_care_and_beauty_store"],
|
|
8741
|
+
stadium: ["stadium_arena"],
|
|
8742
|
+
golf: ["golf_course"],
|
|
8743
|
+
swimming: ["swimming_pool"],
|
|
8744
|
+
fitness: ["fitness_studio", "gym"],
|
|
8745
|
+
parking: ["parking", "parking_lot"],
|
|
8746
|
+
"parking-garage": ["parking_garage"],
|
|
8747
|
+
toilet: ["public_restroom"],
|
|
8748
|
+
bank: ["atm", "bank"],
|
|
8749
|
+
fuel: ["fueling_station", "gas_station"],
|
|
8750
|
+
"charging-station": ["ev_charging_station"],
|
|
8751
|
+
"drinking-water": ["drinking_water", "public_fountain"],
|
|
8752
|
+
harbor: ["marina"],
|
|
8753
|
+
laundry: ["laundry"],
|
|
8754
|
+
college: ["college_university", "research_institute"],
|
|
8755
|
+
library: ["library"]
|
|
8756
|
+
};
|
|
8757
|
+
var streetsPoiCategoryPictograms = Object.freeze({
|
|
8758
|
+
"arts-entertainment": "entertainment",
|
|
8759
|
+
education: "education",
|
|
8760
|
+
"food-drink": "food",
|
|
8761
|
+
landmark: "landmark",
|
|
8762
|
+
lodging: "lodging",
|
|
8763
|
+
medical: "doctor",
|
|
8764
|
+
"park-nature": "nature",
|
|
8765
|
+
"public-services": "town-hall",
|
|
8766
|
+
religion: "worship",
|
|
8767
|
+
retail: "shopping",
|
|
8768
|
+
"sport-leisure": "sport",
|
|
8769
|
+
transport: "major-transit",
|
|
8770
|
+
"visitor-amenity": "services"
|
|
8771
|
+
});
|
|
8772
|
+
function streetsPoiPictogramToken(id) {
|
|
8773
|
+
return token4.image(`poi.pictogram.${id}`);
|
|
8774
|
+
}
|
|
8775
|
+
function streetsPoiImageTokens(variant) {
|
|
8776
|
+
const suffix = {
|
|
8777
|
+
light: "",
|
|
8778
|
+
dark: "-dark",
|
|
8779
|
+
monochrome: "-monochrome",
|
|
8780
|
+
"monochrome-dark": "-monochrome-dark"
|
|
8781
|
+
}[variant];
|
|
8782
|
+
const image2 = (id) => `${id}${suffix}`;
|
|
8783
|
+
return Object.fromEntries([
|
|
8784
|
+
...Object.entries(streetsPoiCategoryPictograms).map(([category, id]) => [
|
|
8785
|
+
`poi.${category}`,
|
|
8786
|
+
image2(id)
|
|
8787
|
+
]),
|
|
8788
|
+
...Object.keys(streetsPoiPictograms).map((id) => [`poi.pictogram.${id}`, image2(id)])
|
|
8789
|
+
]);
|
|
8790
|
+
}
|
|
8791
|
+
function streetsPoiImage() {
|
|
8792
|
+
const categoryBranches = Object.keys(streetsPoiCategoryPictograms).map((category) => {
|
|
8793
|
+
const types = Object.entries(pictogramsByType).filter(([id]) => streetsPoiPictograms[id].category === category).map(([id, labels9]) => ({
|
|
8794
|
+
labels: [...labels9],
|
|
8795
|
+
value: streetsPoiPictogramToken(id)
|
|
8796
|
+
}));
|
|
8797
|
+
const [first, ...rest] = types;
|
|
8798
|
+
const categoryRole = token4.image(`poi.${category}`);
|
|
8799
|
+
return {
|
|
8800
|
+
labels: category,
|
|
8801
|
+
value: first ? expr9.match(
|
|
8802
|
+
expr9.get(field8("poiType")),
|
|
8803
|
+
[first, ...rest],
|
|
8804
|
+
categoryRole
|
|
8805
|
+
) : categoryRole
|
|
8806
|
+
};
|
|
8807
|
+
});
|
|
8808
|
+
const [firstCategory, ...otherCategories] = categoryBranches;
|
|
8809
|
+
const [firstMode, ...otherModes] = Object.entries(pictogramsByMode).map(([id, labels9]) => ({
|
|
8810
|
+
labels: [...labels9],
|
|
8811
|
+
value: streetsPoiPictogramToken(id)
|
|
8812
|
+
}));
|
|
8813
|
+
return expr9.match(
|
|
8814
|
+
expr9.get(field8("mode")),
|
|
8815
|
+
[firstMode, ...otherModes],
|
|
8816
|
+
expr9.match(
|
|
8817
|
+
expr9.get(field8("poiCategory")),
|
|
8818
|
+
[firstCategory, ...otherCategories],
|
|
8819
|
+
token4.image("poi.landmark")
|
|
8820
|
+
)
|
|
8821
|
+
);
|
|
8822
|
+
}
|
|
8823
|
+
|
|
8511
8824
|
// src/official/streets-themes.ts
|
|
8512
|
-
import { defineTheme as defineTheme2, token as
|
|
8825
|
+
import { defineTheme as defineTheme2, token as token5 } from "@tileflow/core";
|
|
8513
8826
|
var streetsLightColors = {
|
|
8514
8827
|
"boundaries.admin": "#CE9298",
|
|
8515
8828
|
"boundaries.default": "#CE9298",
|
|
8516
8829
|
"boundaries.disputed": "#CE9298",
|
|
8517
|
-
"boundaries.halo": "#
|
|
8830
|
+
"boundaries.halo": "#F5F1F0",
|
|
8518
8831
|
"boundaries.major": "#CE9298",
|
|
8519
8832
|
"boundaries.maritime": "#648AA4",
|
|
8520
8833
|
"boundaries.regional": "#CE9698",
|
|
8521
|
-
"buildings.active": "#
|
|
8834
|
+
"buildings.active": "#EFEADD",
|
|
8522
8835
|
"buildings.businessCorridor": "#F4E6D8",
|
|
8523
8836
|
"buildings.businessCorridorOutline": "#DCCFC3",
|
|
8524
|
-
"buildings.civic": "#
|
|
8525
|
-
"buildings.commercial": "#
|
|
8526
|
-
"buildings.destination": "#
|
|
8527
|
-
"buildings.extrusion": "#
|
|
8528
|
-
"buildings.
|
|
8529
|
-
"buildings.
|
|
8530
|
-
"buildings.
|
|
8531
|
-
"buildings.
|
|
8532
|
-
"buildings.
|
|
8837
|
+
"buildings.civic": "#EFEADD",
|
|
8838
|
+
"buildings.commercial": "#EFEADD",
|
|
8839
|
+
"buildings.destination": "#EFEADD",
|
|
8840
|
+
"buildings.extrusion": "#EEE4DA",
|
|
8841
|
+
"buildings.contactShadow": "#8C8178",
|
|
8842
|
+
"buildings.fill": "#EFEADD",
|
|
8843
|
+
"buildings.generic": "#EFEADD",
|
|
8844
|
+
"buildings.industrial": "#EFEADD",
|
|
8845
|
+
"buildings.outline": "#E0CDA5",
|
|
8846
|
+
"buildings.residential": "#EFEADD",
|
|
8533
8847
|
"buildings.shadow": "#BDB7B1",
|
|
8534
8848
|
// Low-zoom bathymetry is composited over the ocean fill. These values are
|
|
8535
8849
|
// deliberately pre-compensated so the rendered result, rather than the raw
|
|
@@ -8538,20 +8852,24 @@ var streetsLightColors = {
|
|
|
8538
8852
|
"hydro.depth.m200": "#6ECEFE59",
|
|
8539
8853
|
"hydro.depth.m2000": "#29B5FD59",
|
|
8540
8854
|
"hydro.depth.m7000": "#15AFFA59",
|
|
8541
|
-
"hydro.ferry": "#
|
|
8855
|
+
"hydro.ferry": "#479CEB",
|
|
8542
8856
|
"hydro.label": "#5A88A9",
|
|
8543
8857
|
"hydro.ocean": "#98DCFE",
|
|
8544
8858
|
"hydro.water": "#98DCFE",
|
|
8545
8859
|
"hydro.waterway": "#98DCFE",
|
|
8546
|
-
"labels.country": "#
|
|
8547
|
-
"labels.
|
|
8860
|
+
"labels.country": "#000000",
|
|
8861
|
+
"labels.ferry": "#2682D9",
|
|
8862
|
+
"labels.ferryHalo": "#98DCFE",
|
|
8863
|
+
"labels.halo": "#F5F1F0",
|
|
8864
|
+
"labels.placeHalo": "#FFFFFF",
|
|
8865
|
+
"labels.roadHalo": "#F2F2F2",
|
|
8548
8866
|
"labels.muted": "#6D6E6C",
|
|
8549
8867
|
"labels.neighborhood": "#626361",
|
|
8550
8868
|
"labels.overview": "#5B5C5A",
|
|
8551
8869
|
"labels.poi": "#555654",
|
|
8552
8870
|
"labels.primary": "#5B5C5A",
|
|
8553
|
-
"labels.road": "#
|
|
8554
|
-
"labels.settlement": "#
|
|
8871
|
+
"labels.road": "#404040",
|
|
8872
|
+
"labels.settlement": "#000000",
|
|
8555
8873
|
"labels.shield.dark": "#1B1D27",
|
|
8556
8874
|
"labels.shield.light": "#FFFFFF",
|
|
8557
8875
|
"labels.strong": "#505050",
|
|
@@ -8566,72 +8884,72 @@ var streetsLightColors = {
|
|
|
8566
8884
|
"landcover.global.shrub": "#D4F0C5",
|
|
8567
8885
|
"landcover.global.snow": "#F4F7F8",
|
|
8568
8886
|
"landcover.global.trees": "#C1EFBE",
|
|
8569
|
-
"landcover.global.urban": "#
|
|
8570
|
-
"landcover.grass": "#
|
|
8571
|
-
"landcover.greenspace": "#
|
|
8887
|
+
"landcover.global.urban": "#F5F1F0",
|
|
8888
|
+
"landcover.grass": "#C2EEBE",
|
|
8889
|
+
"landcover.greenspace": "#B3EAAD",
|
|
8572
8890
|
"landcover.greenspaceDark": "#B8E0AE",
|
|
8573
8891
|
"landcover.ice": "#F4F7F8",
|
|
8574
|
-
"landcover.meadow": "#
|
|
8892
|
+
"landcover.meadow": "#C2EEBE",
|
|
8575
8893
|
"landcover.protected": "#D5E8D0",
|
|
8576
|
-
"landcover.recreationGround": "#
|
|
8894
|
+
"landcover.recreationGround": "#B3EAAD",
|
|
8577
8895
|
"landcover.rock": "#E9E8ED",
|
|
8578
8896
|
"landcover.sand": "#F0ECC6",
|
|
8579
8897
|
"landcover.scrub": "#D2EEC6",
|
|
8580
|
-
"landcover.urbanPark": "#
|
|
8898
|
+
"landcover.urbanPark": "#B3EAAD",
|
|
8581
8899
|
"landcover.villageGreen": "#C2E7B5",
|
|
8582
8900
|
"landcover.wetland": "#D7E9DE",
|
|
8583
|
-
"landcover.wood": "#
|
|
8901
|
+
"landcover.wood": "#A7DFA0",
|
|
8584
8902
|
"landuse.businessCorridor": "#FBEDE2",
|
|
8585
8903
|
"landuse.businessCorridorOutline": "#E6D8CA",
|
|
8586
8904
|
"landuse.cemetery": "#CCE5C6",
|
|
8587
|
-
"landuse.civic": "#
|
|
8905
|
+
"landuse.civic": "#F5F1F0",
|
|
8588
8906
|
"landuse.commercial": "#FBEDE2",
|
|
8589
8907
|
"landuse.education": "#ECE4D2",
|
|
8590
|
-
"landuse.government": "#
|
|
8908
|
+
"landuse.government": "#F5F1F0",
|
|
8591
8909
|
"landuse.industrial": "#E8E8F0",
|
|
8592
8910
|
"landuse.medical": "#EEE0DF",
|
|
8593
|
-
"landuse.military": "#
|
|
8911
|
+
"landuse.military": "#F5F1F0",
|
|
8594
8912
|
"landuse.parking": "#E9E6E7",
|
|
8595
8913
|
"landuse.parkingOutline": "#C8C8CF",
|
|
8596
8914
|
"landuse.railway": "#E8E8F0",
|
|
8597
|
-
"landuse.recreation": "#
|
|
8915
|
+
"landuse.recreation": "#B3EAAD",
|
|
8598
8916
|
"landuse.recreationOutline": "#AED7A5",
|
|
8599
8917
|
"landuse.residential": "#F5F0EF",
|
|
8600
|
-
"poi.arts-entertainment": "#
|
|
8601
|
-
"poi.education": "#
|
|
8602
|
-
"poi.food-drink": "#
|
|
8918
|
+
"poi.arts-entertainment": "#F042B6",
|
|
8919
|
+
"poi.education": "#916130",
|
|
8920
|
+
"poi.food-drink": "#F57A00",
|
|
8603
8921
|
"poi.halo": "#FFFFFF",
|
|
8604
8922
|
"poi.icon": "#777876",
|
|
8605
8923
|
"poi.label": "#555654",
|
|
8606
|
-
"poi.landmark": "#
|
|
8607
|
-
"poi.lodging": "#
|
|
8608
|
-
"poi.medical": "#
|
|
8609
|
-
"poi.park-nature": "#
|
|
8610
|
-
"poi.public-services": "#
|
|
8611
|
-
"poi.religion": "#
|
|
8612
|
-
"poi.retail": "#
|
|
8613
|
-
"poi.sport-leisure": "#
|
|
8614
|
-
"poi.transport": "#
|
|
8615
|
-
"poi.visitor-amenity": "#
|
|
8924
|
+
"poi.landmark": "#F042B6",
|
|
8925
|
+
"poi.lodging": "#664CE6",
|
|
8926
|
+
"poi.medical": "#F53D3D",
|
|
8927
|
+
"poi.park-nature": "#267915",
|
|
8928
|
+
"poi.public-services": "#586E84",
|
|
8929
|
+
"poi.religion": "#586E84",
|
|
8930
|
+
"poi.retail": "#2D87E1",
|
|
8931
|
+
"poi.sport-leisure": "#1891AA",
|
|
8932
|
+
"poi.transport": "#3359CC",
|
|
8933
|
+
"poi.visitor-amenity": "#586E84",
|
|
8616
8934
|
"roads.bridge": "#BEC5D8",
|
|
8617
|
-
"roads.casing": "#
|
|
8618
|
-
"roads.city.casing": "#
|
|
8619
|
-
"roads.city.minor": "#
|
|
8620
|
-
"roads.city.primary": "#
|
|
8621
|
-
"roads.city.secondary": "#
|
|
8622
|
-
"roads.city.tertiary": "#
|
|
8935
|
+
"roads.casing": "#9EA9C4",
|
|
8936
|
+
"roads.city.casing": "#9EA9C4",
|
|
8937
|
+
"roads.city.minor": "#BEC5D8",
|
|
8938
|
+
"roads.city.primary": "#BEC5D8",
|
|
8939
|
+
"roads.city.secondary": "#BEC5D8",
|
|
8940
|
+
"roads.city.tertiary": "#BEC5D8",
|
|
8623
8941
|
"roads.city.tunnel": "#E0E0E5",
|
|
8624
8942
|
"roads.city.tunnelCasing": "#C5C5CF",
|
|
8625
8943
|
"roads.cycleway": "#67AD73",
|
|
8626
8944
|
"roads.default": "#BEC5D8",
|
|
8627
|
-
"roads.default.casing": "#
|
|
8945
|
+
"roads.default.casing": "#9EA9C4",
|
|
8628
8946
|
"roads.default.tunnel": "#DEE0E8",
|
|
8629
|
-
"roads.ferry": "#
|
|
8630
|
-
"roads.major": "#
|
|
8947
|
+
"roads.ferry": "#479CEB",
|
|
8948
|
+
"roads.major": "#A1B0C4",
|
|
8631
8949
|
"roads.minor": "#BEC5D8",
|
|
8632
|
-
"roads.motorway": "#
|
|
8950
|
+
"roads.motorway": "#A1B0C4",
|
|
8633
8951
|
"roads.motorway.casing": "#8D9EAE",
|
|
8634
|
-
"roads.motorway.tunnel": "#
|
|
8952
|
+
"roads.motorway.tunnel": "#BEC8D6",
|
|
8635
8953
|
"roads.parkPath": "#D8E1D8",
|
|
8636
8954
|
"roads.path": "#EFECEF",
|
|
8637
8955
|
"roads.path.casing": "#D1C7C7",
|
|
@@ -8641,15 +8959,19 @@ var streetsLightColors = {
|
|
|
8641
8959
|
"roads.rail": "#8B8E99",
|
|
8642
8960
|
"roads.railTransit": "#8E909D",
|
|
8643
8961
|
"roads.secondary": "#BEC5D8",
|
|
8962
|
+
"roads.sidewalk.surface": "rgba(0, 0, 0, 0.06)",
|
|
8644
8963
|
"roads.trunk": "#A3A6C2",
|
|
8645
8964
|
"roads.trunk.casing": "#8F91AA",
|
|
8646
8965
|
"roads.trunk.tunnel": "#C6C8D4",
|
|
8647
8966
|
"roads.tunnel": "#DEE0E8",
|
|
8648
|
-
"surface.background": "#
|
|
8649
|
-
"surface.building": "#
|
|
8650
|
-
"surface.land": "#
|
|
8651
|
-
"surface.park": "#
|
|
8967
|
+
"surface.background": "#F5F1F0",
|
|
8968
|
+
"surface.building": "#EFEADD",
|
|
8969
|
+
"surface.land": "#F5F1F0",
|
|
8970
|
+
"surface.park": "#B3EAAD",
|
|
8652
8971
|
"surface.water": "#98DCFE",
|
|
8972
|
+
"terrain.hillshade.accent": "#A6AB91",
|
|
8973
|
+
"terrain.hillshade.highlight": "#FFFFFF",
|
|
8974
|
+
"terrain.hillshade.shadow": "#727B64",
|
|
8653
8975
|
"transit.primary": "#5C74D6",
|
|
8654
8976
|
"vegetation.tree.bark": "#918878",
|
|
8655
8977
|
"vegetation.tree.broadleaf.a": "#83AD83",
|
|
@@ -8675,6 +8997,7 @@ var streetsDarkColors = {
|
|
|
8675
8997
|
"buildings.commercial": "#2C2E3D",
|
|
8676
8998
|
"buildings.destination": "#3A3947",
|
|
8677
8999
|
"buildings.extrusion": "#343646",
|
|
9000
|
+
"buildings.contactShadow": "#121522",
|
|
8678
9001
|
"buildings.fill": "#2C2E3D",
|
|
8679
9002
|
"buildings.generic": "#2C2E3D",
|
|
8680
9003
|
"buildings.industrial": "#2C2E3D",
|
|
@@ -8691,7 +9014,11 @@ var streetsDarkColors = {
|
|
|
8691
9014
|
"hydro.water": "#18223B",
|
|
8692
9015
|
"hydro.waterway": "#18223B",
|
|
8693
9016
|
"labels.country": "#A6A7AC",
|
|
9017
|
+
"labels.ferry": "#8799BE",
|
|
9018
|
+
"labels.ferryHalo": "#18223B",
|
|
8694
9019
|
"labels.halo": "#252839",
|
|
9020
|
+
"labels.placeHalo": "#252839",
|
|
9021
|
+
"labels.roadHalo": "#252839",
|
|
8695
9022
|
"labels.muted": "#8F9098",
|
|
8696
9023
|
"labels.neighborhood": "#8F9098",
|
|
8697
9024
|
"labels.overview": "#B2B1B7",
|
|
@@ -8745,19 +9072,19 @@ var streetsDarkColors = {
|
|
|
8745
9072
|
"landuse.recreationOutline": "#63756A",
|
|
8746
9073
|
"landuse.residential": "#2D3043",
|
|
8747
9074
|
"poi.arts-entertainment": "#C786BC",
|
|
8748
|
-
"poi.education": "#
|
|
8749
|
-
"poi.food-drink": "#
|
|
9075
|
+
"poi.education": "#B6A783",
|
|
9076
|
+
"poi.food-drink": "#D8BD65",
|
|
8750
9077
|
"poi.halo": "#252839",
|
|
8751
9078
|
"poi.icon": "#8F9098",
|
|
8752
9079
|
"poi.label": "#B8B7BD",
|
|
8753
9080
|
"poi.landmark": "#C786BC",
|
|
8754
9081
|
"poi.lodging": "#AA94DA",
|
|
8755
9082
|
"poi.medical": "#DC7C89",
|
|
8756
|
-
"poi.park-nature": "#
|
|
9083
|
+
"poi.park-nature": "#89B871",
|
|
8757
9084
|
"poi.public-services": "#8F9098",
|
|
8758
|
-
"poi.religion": "#
|
|
8759
|
-
"poi.retail": "#
|
|
8760
|
-
"poi.sport-leisure": "#
|
|
9085
|
+
"poi.religion": "#9DAAB0",
|
|
9086
|
+
"poi.retail": "#94BCE3",
|
|
9087
|
+
"poi.sport-leisure": "#89B871",
|
|
8761
9088
|
"poi.transport": "#8296E6",
|
|
8762
9089
|
"poi.visitor-amenity": "#8F9098",
|
|
8763
9090
|
"roads.bridge": "#636779",
|
|
@@ -8788,6 +9115,7 @@ var streetsDarkColors = {
|
|
|
8788
9115
|
"roads.rail": "#7C7F8C",
|
|
8789
9116
|
"roads.railTransit": "#777B89",
|
|
8790
9117
|
"roads.secondary": "#636779",
|
|
9118
|
+
"roads.sidewalk.surface": "rgba(255, 255, 255, 0.06)",
|
|
8791
9119
|
"roads.trunk": "#6F7188",
|
|
8792
9120
|
"roads.trunk.casing": "#505264",
|
|
8793
9121
|
"roads.trunk.tunnel": "#5B5D70",
|
|
@@ -8797,6 +9125,9 @@ var streetsDarkColors = {
|
|
|
8797
9125
|
"surface.land": "#2D3043",
|
|
8798
9126
|
"surface.park": "#34453F",
|
|
8799
9127
|
"surface.water": "#18223B",
|
|
9128
|
+
"terrain.hillshade.accent": "#252D36",
|
|
9129
|
+
"terrain.hillshade.highlight": "#576374",
|
|
9130
|
+
"terrain.hillshade.shadow": "#101827",
|
|
8800
9131
|
"transit.primary": "#8296E6",
|
|
8801
9132
|
"vegetation.tree.bark": "#52483D",
|
|
8802
9133
|
"vegetation.tree.broadleaf.a": "#35473F",
|
|
@@ -8807,24 +9138,126 @@ var streetsDarkColors = {
|
|
|
8807
9138
|
"vegetation.tree.conifer.b": "#384A40",
|
|
8808
9139
|
"vegetation.tree.conifer.c": "#405348"
|
|
8809
9140
|
};
|
|
9141
|
+
function parseStreetsColor(value) {
|
|
9142
|
+
const hex = /^#([\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$/i.exec(value);
|
|
9143
|
+
if (hex) {
|
|
9144
|
+
const digits = hex[1];
|
|
9145
|
+
const expanded = digits.length < 5 ? [...digits].map((digit) => digit + digit).join("") : digits;
|
|
9146
|
+
return {
|
|
9147
|
+
r: Number.parseInt(expanded.slice(0, 2), 16),
|
|
9148
|
+
g: Number.parseInt(expanded.slice(2, 4), 16),
|
|
9149
|
+
b: Number.parseInt(expanded.slice(4, 6), 16),
|
|
9150
|
+
a: expanded.length === 8 ? Number.parseInt(expanded.slice(6, 8), 16) / 255 : 1
|
|
9151
|
+
};
|
|
9152
|
+
}
|
|
9153
|
+
const rgb = /^rgba?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)(?:\s*,\s*(\d+(?:\.\d+)?))?\s*\)$/i.exec(
|
|
9154
|
+
value
|
|
9155
|
+
);
|
|
9156
|
+
if (rgb) {
|
|
9157
|
+
return {
|
|
9158
|
+
r: Number(rgb[1]),
|
|
9159
|
+
g: Number(rgb[2]),
|
|
9160
|
+
b: Number(rgb[3]),
|
|
9161
|
+
a: rgb[4] === void 0 ? 1 : Number(rgb[4])
|
|
9162
|
+
};
|
|
9163
|
+
}
|
|
9164
|
+
throw new Error(`Unsupported Streets theme color: ${value}`);
|
|
9165
|
+
}
|
|
9166
|
+
function formatStreetsColor({ a, b, g, r }, format) {
|
|
9167
|
+
const channel = (value) => Math.max(0, Math.min(255, Math.round(value)));
|
|
9168
|
+
if (format.startsWith("rgba")) {
|
|
9169
|
+
return `rgba(${channel(r)}, ${channel(g)}, ${channel(b)}, ${Number(a.toFixed(3))})`;
|
|
9170
|
+
}
|
|
9171
|
+
const hex = (value) => channel(value).toString(16).padStart(2, "0");
|
|
9172
|
+
return `#${hex(r)}${hex(g)}${hex(b)}${format.length === 9 ? hex(a * 255) : ""}`;
|
|
9173
|
+
}
|
|
9174
|
+
function mixStreetsColor(color, tint, amount) {
|
|
9175
|
+
const target = parseStreetsColor(tint);
|
|
9176
|
+
return {
|
|
9177
|
+
r: color.r + (target.r - color.r) * amount,
|
|
9178
|
+
g: color.g + (target.g - color.g) * amount,
|
|
9179
|
+
b: color.b + (target.b - color.b) * amount,
|
|
9180
|
+
a: color.a
|
|
9181
|
+
};
|
|
9182
|
+
}
|
|
9183
|
+
function adjustStreetsColors(colors, transform) {
|
|
9184
|
+
return Object.fromEntries(
|
|
9185
|
+
Object.entries(colors).map(([role, value]) => [
|
|
9186
|
+
role,
|
|
9187
|
+
formatStreetsColor(transform(role, parseStreetsColor(value)), value)
|
|
9188
|
+
])
|
|
9189
|
+
);
|
|
9190
|
+
}
|
|
9191
|
+
function applyStreetsLightPreset(colors, preset) {
|
|
9192
|
+
if (preset === "day" || preset === "night") return { ...colors };
|
|
9193
|
+
const dawn = preset === "dawn";
|
|
9194
|
+
return adjustStreetsColors(colors, (role, color) => {
|
|
9195
|
+
if (role.startsWith("hydro.") || role === "boundaries.maritime" || role === "surface.water" || role === "labels.water" || role === "labels.waterHalo" || role === "labels.ferry" || role === "labels.ferryHalo") {
|
|
9196
|
+
return mixStreetsColor(color, dawn ? "#8EA9B8" : "#7893AA", dawn ? 0.24 : 0.2);
|
|
9197
|
+
}
|
|
9198
|
+
if (role.startsWith("roads.")) {
|
|
9199
|
+
return mixStreetsColor(color, dawn ? "#B8AEB0" : "#9698A8", dawn ? 0.17 : 0.2);
|
|
9200
|
+
}
|
|
9201
|
+
const greenLandcover = role.startsWith("landcover.") && !/(?:^|\.)(?:barren|ice|rock|sand|snow|urban)$/.test(role);
|
|
9202
|
+
if (greenLandcover || role.startsWith("vegetation.tree.") || role === "surface.park" || role === "landuse.cemetery" || role === "landuse.recreation" || role === "landuse.recreationOutline") {
|
|
9203
|
+
return mixStreetsColor(color, dawn ? "#B9D5AB" : "#A6BDA8", dawn ? 0.13 : 0.17);
|
|
9204
|
+
}
|
|
9205
|
+
const halo = role === "labels.halo" || role.endsWith("Halo") || role === "poi.halo";
|
|
9206
|
+
if (role.startsWith("labels.") && !halo) {
|
|
9207
|
+
return mixStreetsColor(color, dawn ? "#514B48" : "#494A54", dawn ? 0.06 : 0.08);
|
|
9208
|
+
}
|
|
9209
|
+
if (halo) {
|
|
9210
|
+
return mixStreetsColor(color, dawn ? "#F2E3D7" : "#E5DFE4", dawn ? 0.23 : 0.18);
|
|
9211
|
+
}
|
|
9212
|
+
if (role.startsWith("landuse.parking")) {
|
|
9213
|
+
return mixStreetsColor(color, dawn ? "#D7D6D5" : "#CECFD7", dawn ? 0.16 : 0.2);
|
|
9214
|
+
}
|
|
9215
|
+
if (role.startsWith("buildings.") || role.startsWith("landuse.") || role.startsWith("surface.") || role === "boundaries.halo") {
|
|
9216
|
+
return mixStreetsColor(color, dawn ? "#F2E3D7" : "#E5DFE4", dawn ? 0.23 : 0.18);
|
|
9217
|
+
}
|
|
9218
|
+
return color;
|
|
9219
|
+
});
|
|
9220
|
+
}
|
|
9221
|
+
function applyStreetsColorTheme(colors, theme, isDark) {
|
|
9222
|
+
if (theme === "default") return { ...colors };
|
|
9223
|
+
if (theme === "monochrome") {
|
|
9224
|
+
return adjustStreetsColors(colors, (_role, color) => {
|
|
9225
|
+
const gray = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;
|
|
9226
|
+
return { ...color, r: gray, g: gray, b: gray };
|
|
9227
|
+
});
|
|
9228
|
+
}
|
|
9229
|
+
const background = isDark ? "#292C3A" : "#F1F0ED";
|
|
9230
|
+
return adjustStreetsColors(colors, (_role, color) => {
|
|
9231
|
+
const gray = color.r * 0.2126 + color.g * 0.7152 + color.b * 0.0722;
|
|
9232
|
+
const desaturated = {
|
|
9233
|
+
...color,
|
|
9234
|
+
r: gray + (color.r - gray) * 0.52,
|
|
9235
|
+
g: gray + (color.g - gray) * 0.52,
|
|
9236
|
+
b: gray + (color.b - gray) * 0.52
|
|
9237
|
+
};
|
|
9238
|
+
return mixStreetsColor(desaturated, background, isDark ? 0.08 : 0.12);
|
|
9239
|
+
});
|
|
9240
|
+
}
|
|
9241
|
+
function streetsPaletteColors(preset, colorTheme) {
|
|
9242
|
+
const isDark = preset === "night";
|
|
9243
|
+
const base = isDark ? streetsDarkColors : streetsLightColors;
|
|
9244
|
+
return applyStreetsColorTheme(applyStreetsLightPreset(base, preset), colorTheme, isDark);
|
|
9245
|
+
}
|
|
8810
9246
|
var streetsFonts = {
|
|
9247
|
+
// DIN Pro Medium has much lighter strokes than Noto Sans Bold. Of the
|
|
9248
|
+
// hosted Noto faces, Regular is the closer match for navigation and POIs.
|
|
8811
9249
|
default: "Noto Sans Regular",
|
|
8812
|
-
places: "Noto Sans Bold"
|
|
9250
|
+
places: "Noto Sans Bold",
|
|
9251
|
+
regular: "Noto Sans Regular",
|
|
9252
|
+
water: "Noto Sans Italic"
|
|
8813
9253
|
};
|
|
8814
9254
|
var streetsImages = {
|
|
8815
|
-
|
|
8816
|
-
|
|
8817
|
-
|
|
8818
|
-
|
|
8819
|
-
|
|
8820
|
-
|
|
8821
|
-
"poi.park-nature": "services",
|
|
8822
|
-
"poi.public-services": "services",
|
|
8823
|
-
"poi.religion": "culture",
|
|
8824
|
-
"poi.retail": "shopping",
|
|
8825
|
-
"poi.sport-leisure": "culture",
|
|
8826
|
-
"poi.transport": "major-transit",
|
|
8827
|
-
"poi.visitor-amenity": "services",
|
|
9255
|
+
...Object.fromEntries(
|
|
9256
|
+
["round", "open", "tall", "conifer", "columnar", "palm-feather", "palm-fan"].map((form) => [
|
|
9257
|
+
`vegetation.tree.${form}`,
|
|
9258
|
+
`streets-tree-${form}`
|
|
9259
|
+
])
|
|
9260
|
+
),
|
|
8828
9261
|
"roads.crosswalk": "crosswalk",
|
|
8829
9262
|
"roads.oneway": "oneway",
|
|
8830
9263
|
"roads.shield.circleNeutral": "road-shield-circle-neutral",
|
|
@@ -8836,95 +9269,136 @@ var streetsImages = {
|
|
|
8836
9269
|
"roads.shield.rectangleYellow": "road-shield-rectangle-yellow",
|
|
8837
9270
|
"roads.sidewalkPattern": "sidewalk-dot"
|
|
8838
9271
|
};
|
|
8839
|
-
var
|
|
8840
|
-
|
|
8841
|
-
|
|
8842
|
-
|
|
8843
|
-
|
|
8844
|
-
|
|
8845
|
-
|
|
8846
|
-
|
|
8847
|
-
|
|
8848
|
-
|
|
8849
|
-
|
|
8850
|
-
|
|
8851
|
-
|
|
8852
|
-
|
|
8853
|
-
|
|
8854
|
-
|
|
8855
|
-
|
|
8856
|
-
|
|
8857
|
-
|
|
8858
|
-
|
|
8859
|
-
|
|
8860
|
-
|
|
8861
|
-
|
|
9272
|
+
var streetsLightTheme = defineTheme2({
|
|
9273
|
+
id: "streets-light",
|
|
9274
|
+
version: 1,
|
|
9275
|
+
colorScheme: "light",
|
|
9276
|
+
tokens: {
|
|
9277
|
+
color: streetsLightColors,
|
|
9278
|
+
number: {},
|
|
9279
|
+
font: streetsFonts,
|
|
9280
|
+
image: { ...streetsImages, ...streetsPoiImageTokens("light") }
|
|
9281
|
+
},
|
|
9282
|
+
typography: {
|
|
9283
|
+
font: token5.font("default"),
|
|
9284
|
+
places: { font: token5.font("places") },
|
|
9285
|
+
poi: { font: token5.font("default") },
|
|
9286
|
+
roads: { font: token5.font("default") },
|
|
9287
|
+
water: { font: token5.font("default") }
|
|
9288
|
+
},
|
|
9289
|
+
lighting: {
|
|
9290
|
+
// A broad, high light keeps warm roofs bright and facades softly shaded.
|
|
9291
|
+
// Anchor it to the map so rotating the camera does not move the light.
|
|
9292
|
+
anchor: "map",
|
|
9293
|
+
color: "#FFFFFF",
|
|
9294
|
+
intensity: 0.08,
|
|
9295
|
+
position: [1.15, 210, 30]
|
|
9296
|
+
}
|
|
9297
|
+
});
|
|
9298
|
+
var streetsDarkTheme = defineTheme2({
|
|
9299
|
+
id: "streets-dark",
|
|
9300
|
+
version: 1,
|
|
9301
|
+
colorScheme: "dark",
|
|
9302
|
+
tokens: {
|
|
9303
|
+
color: streetsDarkColors,
|
|
9304
|
+
number: {},
|
|
9305
|
+
font: streetsFonts,
|
|
9306
|
+
image: {
|
|
9307
|
+
...streetsImages,
|
|
9308
|
+
...streetsPoiImageTokens("dark"),
|
|
9309
|
+
...Object.fromEntries(
|
|
9310
|
+
Object.entries(streetsImages).filter(([role]) => role.startsWith("vegetation.tree.")).map(([role, image2]) => [role, `${image2}-dark`])
|
|
9311
|
+
),
|
|
9312
|
+
"roads.sidewalkPattern": "sidewalk-dot-dark"
|
|
8862
9313
|
}
|
|
8863
|
-
}
|
|
8864
|
-
|
|
8865
|
-
|
|
9314
|
+
},
|
|
9315
|
+
typography: {
|
|
9316
|
+
font: token5.font("default"),
|
|
9317
|
+
places: { font: token5.font("places") },
|
|
9318
|
+
poi: { font: token5.font("default") },
|
|
9319
|
+
roads: { font: token5.font("default") },
|
|
9320
|
+
water: { font: token5.font("default") }
|
|
9321
|
+
},
|
|
9322
|
+
lighting: {
|
|
9323
|
+
anchor: "viewport",
|
|
9324
|
+
color: "#9FB6D0",
|
|
9325
|
+
intensity: 0.08,
|
|
9326
|
+
position: [1.15, 210, 30]
|
|
9327
|
+
}
|
|
9328
|
+
});
|
|
9329
|
+
function defineStreetsPaletteTheme(name, preset, colorTheme) {
|
|
9330
|
+
const isDark = preset === "night";
|
|
9331
|
+
const imageVariant = colorTheme === "monochrome" ? isDark ? "monochrome-dark" : "monochrome" : void 0;
|
|
9332
|
+
return defineTheme2(isDark ? streetsDarkTheme : streetsLightTheme, {
|
|
9333
|
+
id: `streets-${name}`,
|
|
8866
9334
|
version: 1,
|
|
8867
|
-
colorScheme: "dark",
|
|
9335
|
+
colorScheme: isDark ? "dark" : "light",
|
|
8868
9336
|
tokens: {
|
|
8869
|
-
color:
|
|
8870
|
-
|
|
8871
|
-
font: streetsFonts,
|
|
8872
|
-
image: {
|
|
8873
|
-
...streetsImages,
|
|
8874
|
-
"roads.sidewalkPattern": "sidewalk-dot-dark"
|
|
8875
|
-
}
|
|
8876
|
-
},
|
|
8877
|
-
typography: {
|
|
8878
|
-
font: token4.font("default"),
|
|
8879
|
-
places: { font: token4.font("places") },
|
|
8880
|
-
poi: { font: token4.font("default") },
|
|
8881
|
-
roads: { font: token4.font("default") },
|
|
8882
|
-
water: { font: token4.font("default") }
|
|
8883
|
-
},
|
|
8884
|
-
lighting: {
|
|
8885
|
-
anchor: "viewport",
|
|
8886
|
-
color: "#9FB6D0",
|
|
8887
|
-
intensity: 0.08,
|
|
8888
|
-
position: [1.15, 210, 30]
|
|
9337
|
+
color: streetsPaletteColors(preset, colorTheme),
|
|
9338
|
+
...imageVariant ? { image: streetsPoiImageTokens(imageVariant) } : {}
|
|
8889
9339
|
}
|
|
8890
|
-
})
|
|
9340
|
+
});
|
|
9341
|
+
}
|
|
9342
|
+
var streetsThemes = Object.freeze({
|
|
9343
|
+
light: streetsLightTheme,
|
|
9344
|
+
dark: streetsDarkTheme,
|
|
9345
|
+
dawn: defineStreetsPaletteTheme("dawn", "dawn", "default"),
|
|
9346
|
+
dusk: defineStreetsPaletteTheme("dusk", "dusk", "default"),
|
|
9347
|
+
faded: defineStreetsPaletteTheme("faded", "day", "faded"),
|
|
9348
|
+
monochrome: defineStreetsPaletteTheme("monochrome", "day", "monochrome"),
|
|
9349
|
+
"dawn-faded": defineStreetsPaletteTheme("dawn-faded", "dawn", "faded"),
|
|
9350
|
+
"dawn-monochrome": defineStreetsPaletteTheme("dawn-monochrome", "dawn", "monochrome"),
|
|
9351
|
+
"dusk-faded": defineStreetsPaletteTheme("dusk-faded", "dusk", "faded"),
|
|
9352
|
+
"dusk-monochrome": defineStreetsPaletteTheme("dusk-monochrome", "dusk", "monochrome"),
|
|
9353
|
+
"dark-faded": defineStreetsPaletteTheme("dark-faded", "night", "faded"),
|
|
9354
|
+
"dark-monochrome": defineStreetsPaletteTheme("dark-monochrome", "night", "monochrome")
|
|
8891
9355
|
});
|
|
8892
9356
|
var streetsVisual = {
|
|
8893
9357
|
boundary: {
|
|
8894
|
-
admin:
|
|
8895
|
-
halo:
|
|
8896
|
-
regional:
|
|
8897
|
-
overviewLabel:
|
|
9358
|
+
admin: token5.color("boundaries.admin"),
|
|
9359
|
+
halo: token5.color("boundaries.halo"),
|
|
9360
|
+
regional: token5.color("boundaries.regional"),
|
|
9361
|
+
overviewLabel: token5.color("labels.overview")
|
|
8898
9362
|
},
|
|
8899
9363
|
building: {
|
|
8900
|
-
|
|
8901
|
-
|
|
8902
|
-
|
|
8903
|
-
|
|
9364
|
+
contactShadow: token5.color("buildings.contactShadow"),
|
|
9365
|
+
extrusion: token5.color("buildings.extrusion"),
|
|
9366
|
+
fill: token5.color("buildings.fill"),
|
|
9367
|
+
outline: token5.color("buildings.outline"),
|
|
9368
|
+
shadow: token5.color("buildings.shadow")
|
|
9369
|
+
},
|
|
9370
|
+
terrain: {
|
|
9371
|
+
accent: token5.color("terrain.hillshade.accent"),
|
|
9372
|
+
highlight: token5.color("terrain.hillshade.highlight"),
|
|
9373
|
+
shadow: token5.color("terrain.hillshade.shadow")
|
|
8904
9374
|
},
|
|
8905
9375
|
hydro: {
|
|
8906
|
-
depth0:
|
|
8907
|
-
depth200:
|
|
8908
|
-
depth2000:
|
|
8909
|
-
depth7000:
|
|
8910
|
-
ocean:
|
|
8911
|
-
water:
|
|
9376
|
+
depth0: token5.color("hydro.depth.m0"),
|
|
9377
|
+
depth200: token5.color("hydro.depth.m200"),
|
|
9378
|
+
depth2000: token5.color("hydro.depth.m2000"),
|
|
9379
|
+
depth7000: token5.color("hydro.depth.m7000"),
|
|
9380
|
+
ocean: token5.color("hydro.ocean"),
|
|
9381
|
+
water: token5.color("hydro.water")
|
|
8912
9382
|
},
|
|
8913
9383
|
label: {
|
|
8914
|
-
country:
|
|
8915
|
-
|
|
8916
|
-
|
|
8917
|
-
|
|
8918
|
-
|
|
8919
|
-
|
|
8920
|
-
|
|
8921
|
-
|
|
8922
|
-
|
|
8923
|
-
|
|
8924
|
-
|
|
8925
|
-
|
|
8926
|
-
|
|
8927
|
-
|
|
9384
|
+
country: token5.color("labels.country"),
|
|
9385
|
+
ferry: token5.color("labels.ferry"),
|
|
9386
|
+
ferryHalo: token5.color("labels.ferryHalo"),
|
|
9387
|
+
halo: token5.color("labels.halo"),
|
|
9388
|
+
muted: token5.color("labels.muted"),
|
|
9389
|
+
neighborhood: token5.color("labels.neighborhood"),
|
|
9390
|
+
overview: token5.color("labels.overview"),
|
|
9391
|
+
poi: token5.color("labels.poi"),
|
|
9392
|
+
primary: token5.color("labels.primary"),
|
|
9393
|
+
road: token5.color("labels.road"),
|
|
9394
|
+
settlement: token5.color("labels.settlement"),
|
|
9395
|
+
shieldDark: token5.color("labels.shield.dark"),
|
|
9396
|
+
shieldLight: token5.color("labels.shield.light"),
|
|
9397
|
+
strong: token5.color("labels.strong"),
|
|
9398
|
+
water: token5.color("labels.water"),
|
|
9399
|
+
waterHalo: token5.color("labels.waterHalo"),
|
|
9400
|
+
placeHalo: token5.color("labels.placeHalo"),
|
|
9401
|
+
roadHalo: token5.color("labels.roadHalo")
|
|
8928
9402
|
},
|
|
8929
9403
|
landcover: Object.fromEntries(
|
|
8930
9404
|
[
|
|
@@ -8945,12 +9419,12 @@ var streetsVisual = {
|
|
|
8945
9419
|
"villageGreen",
|
|
8946
9420
|
"wetland",
|
|
8947
9421
|
"wood"
|
|
8948
|
-
].map((name) => [name,
|
|
9422
|
+
].map((name) => [name, token5.color(`landcover.${name}`)])
|
|
8949
9423
|
),
|
|
8950
9424
|
globalLandcover: Object.fromEntries(
|
|
8951
9425
|
["barren", "crop", "grass", "shrub", "snow", "trees", "urban"].map((name) => [
|
|
8952
9426
|
name,
|
|
8953
|
-
|
|
9427
|
+
token5.color(`landcover.global.${name}`)
|
|
8954
9428
|
])
|
|
8955
9429
|
),
|
|
8956
9430
|
landuse: Object.fromEntries(
|
|
@@ -8971,7 +9445,7 @@ var streetsVisual = {
|
|
|
8971
9445
|
"recreation",
|
|
8972
9446
|
"recreationOutline",
|
|
8973
9447
|
"residential"
|
|
8974
|
-
].map((name) => [name,
|
|
9448
|
+
].map((name) => [name, token5.color(`landuse.${name}`)])
|
|
8975
9449
|
),
|
|
8976
9450
|
poi: Object.fromEntries(
|
|
8977
9451
|
[
|
|
@@ -8991,68 +9465,309 @@ var streetsVisual = {
|
|
|
8991
9465
|
"sport-leisure",
|
|
8992
9466
|
"transport",
|
|
8993
9467
|
"visitor-amenity"
|
|
8994
|
-
].map((name) => [name,
|
|
9468
|
+
].map((name) => [name, token5.color(`poi.${name}`)])
|
|
8995
9469
|
),
|
|
8996
9470
|
road: {
|
|
8997
|
-
casing:
|
|
8998
|
-
cityCasing:
|
|
8999
|
-
cityMinor:
|
|
9000
|
-
cityPrimary:
|
|
9001
|
-
citySecondary:
|
|
9002
|
-
cityTertiary:
|
|
9003
|
-
cityTunnel:
|
|
9004
|
-
cityTunnelCasing:
|
|
9005
|
-
cycleway:
|
|
9006
|
-
default:
|
|
9007
|
-
ferry:
|
|
9008
|
-
motorway:
|
|
9009
|
-
motorwayCasing:
|
|
9010
|
-
motorwayTunnel:
|
|
9011
|
-
parkPath:
|
|
9012
|
-
path:
|
|
9013
|
-
pathCasing:
|
|
9014
|
-
pathTransition:
|
|
9015
|
-
pathTunnel:
|
|
9016
|
-
rail:
|
|
9017
|
-
railTransit:
|
|
9018
|
-
|
|
9019
|
-
|
|
9020
|
-
|
|
9021
|
-
|
|
9471
|
+
casing: token5.color("roads.default.casing"),
|
|
9472
|
+
cityCasing: token5.color("roads.city.casing"),
|
|
9473
|
+
cityMinor: token5.color("roads.city.minor"),
|
|
9474
|
+
cityPrimary: token5.color("roads.city.primary"),
|
|
9475
|
+
citySecondary: token5.color("roads.city.secondary"),
|
|
9476
|
+
cityTertiary: token5.color("roads.city.tertiary"),
|
|
9477
|
+
cityTunnel: token5.color("roads.city.tunnel"),
|
|
9478
|
+
cityTunnelCasing: token5.color("roads.city.tunnelCasing"),
|
|
9479
|
+
cycleway: token5.color("roads.cycleway"),
|
|
9480
|
+
default: token5.color("roads.default"),
|
|
9481
|
+
ferry: token5.color("roads.ferry"),
|
|
9482
|
+
motorway: token5.color("roads.motorway"),
|
|
9483
|
+
motorwayCasing: token5.color("roads.motorway.casing"),
|
|
9484
|
+
motorwayTunnel: token5.color("roads.motorway.tunnel"),
|
|
9485
|
+
parkPath: token5.color("roads.parkPath"),
|
|
9486
|
+
path: token5.color("roads.path"),
|
|
9487
|
+
pathCasing: token5.color("roads.path.casing"),
|
|
9488
|
+
pathTransition: token5.color("roads.path.transition"),
|
|
9489
|
+
pathTunnel: token5.color("roads.path.tunnel"),
|
|
9490
|
+
rail: token5.color("roads.rail"),
|
|
9491
|
+
railTransit: token5.color("roads.railTransit"),
|
|
9492
|
+
sidewalkSurface: token5.color("roads.sidewalk.surface"),
|
|
9493
|
+
trunk: token5.color("roads.trunk"),
|
|
9494
|
+
trunkCasing: token5.color("roads.trunk.casing"),
|
|
9495
|
+
trunkTunnel: token5.color("roads.trunk.tunnel"),
|
|
9496
|
+
tunnel: token5.color("roads.default.tunnel")
|
|
9022
9497
|
},
|
|
9023
9498
|
surface: {
|
|
9024
|
-
background:
|
|
9025
|
-
building:
|
|
9026
|
-
land:
|
|
9027
|
-
park:
|
|
9028
|
-
water:
|
|
9499
|
+
background: token5.color("surface.background"),
|
|
9500
|
+
building: token5.color("surface.building"),
|
|
9501
|
+
land: token5.color("surface.land"),
|
|
9502
|
+
park: token5.color("surface.park"),
|
|
9503
|
+
water: token5.color("surface.water")
|
|
9029
9504
|
},
|
|
9030
|
-
transit:
|
|
9505
|
+
transit: token5.color("transit.primary"),
|
|
9031
9506
|
tree: {
|
|
9032
|
-
bark:
|
|
9507
|
+
bark: token5.color("vegetation.tree.bark"),
|
|
9033
9508
|
broadleaf: ["a", "b", "c", "d"].map(
|
|
9034
|
-
(suffix) =>
|
|
9509
|
+
(suffix) => token5.color(`vegetation.tree.broadleaf.${suffix}`)
|
|
9035
9510
|
),
|
|
9036
|
-
conifer: ["a", "b", "c"].map((suffix) =>
|
|
9511
|
+
conifer: ["a", "b", "c"].map((suffix) => token5.color(`vegetation.tree.conifer.${suffix}`))
|
|
9037
9512
|
},
|
|
9038
9513
|
image: {
|
|
9039
|
-
crosswalk:
|
|
9040
|
-
oneway:
|
|
9041
|
-
shieldCircleNeutral:
|
|
9042
|
-
shieldRectangleBlue:
|
|
9043
|
-
shieldRectangleGreen:
|
|
9044
|
-
shieldRectangleNeutral:
|
|
9045
|
-
shieldRectangleOrange:
|
|
9046
|
-
shieldRectangleRed:
|
|
9047
|
-
shieldRectangleYellow:
|
|
9048
|
-
sidewalkPattern:
|
|
9514
|
+
crosswalk: token5.image("roads.crosswalk"),
|
|
9515
|
+
oneway: token5.image("roads.oneway"),
|
|
9516
|
+
shieldCircleNeutral: token5.image("roads.shield.circleNeutral"),
|
|
9517
|
+
shieldRectangleBlue: token5.image("roads.shield.rectangleBlue"),
|
|
9518
|
+
shieldRectangleGreen: token5.image("roads.shield.rectangleGreen"),
|
|
9519
|
+
shieldRectangleNeutral: token5.image("roads.shield.rectangleNeutral"),
|
|
9520
|
+
shieldRectangleOrange: token5.image("roads.shield.rectangleOrange"),
|
|
9521
|
+
shieldRectangleRed: token5.image("roads.shield.rectangleRed"),
|
|
9522
|
+
shieldRectangleYellow: token5.image("roads.shield.rectangleYellow"),
|
|
9523
|
+
sidewalkPattern: token5.image("roads.sidewalkPattern")
|
|
9049
9524
|
},
|
|
9050
9525
|
font: {
|
|
9051
|
-
default:
|
|
9052
|
-
places:
|
|
9526
|
+
default: token5.font("default"),
|
|
9527
|
+
places: token5.font("places"),
|
|
9528
|
+
regular: token5.font("regular"),
|
|
9529
|
+
water: token5.font("water")
|
|
9053
9530
|
}
|
|
9054
9531
|
};
|
|
9055
9532
|
|
|
9533
|
+
// src/official/streets-trees.ts
|
|
9534
|
+
import {
|
|
9535
|
+
expr as expr10,
|
|
9536
|
+
field as field9,
|
|
9537
|
+
renderPass as renderPass8,
|
|
9538
|
+
token as token6,
|
|
9539
|
+
vegetation as vegetation6,
|
|
9540
|
+
withRenderStack as withRenderStack8,
|
|
9541
|
+
zoom as zoom9
|
|
9542
|
+
} from "@tileflow/core";
|
|
9543
|
+
var seed = expr10.toNumber(expr10.id(), 0);
|
|
9544
|
+
var genus = expr10.get(field9("genus"));
|
|
9545
|
+
var leaf = expr10.get(field9("leafType"));
|
|
9546
|
+
var named = (names) => expr10.match(
|
|
9547
|
+
genus,
|
|
9548
|
+
[{ labels: names.flatMap((name) => [name, name.toLowerCase()]), value: true }],
|
|
9549
|
+
false
|
|
9550
|
+
);
|
|
9551
|
+
var image = (form) => token6.image(`vegetation.tree.${form}`);
|
|
9552
|
+
var broadleaf = expr10.match(
|
|
9553
|
+
expr10.modulo(seed, 3),
|
|
9554
|
+
[
|
|
9555
|
+
{ labels: [0], value: image("round") },
|
|
9556
|
+
{ labels: [1], value: image("open") }
|
|
9557
|
+
],
|
|
9558
|
+
image("tall")
|
|
9559
|
+
);
|
|
9560
|
+
var palm = expr10.match(
|
|
9561
|
+
expr10.modulo(seed, 2),
|
|
9562
|
+
[{ labels: [0], value: image("palm-feather") }],
|
|
9563
|
+
image("palm-fan")
|
|
9564
|
+
);
|
|
9565
|
+
var crownImage = expr10.case(
|
|
9566
|
+
[
|
|
9567
|
+
{
|
|
9568
|
+
when: expr10.any(
|
|
9569
|
+
expr10.eq(leaf, "palm"),
|
|
9570
|
+
named([
|
|
9571
|
+
"Acoelorrhaphe",
|
|
9572
|
+
"Adonidia",
|
|
9573
|
+
"Archontophoenix",
|
|
9574
|
+
"Areca",
|
|
9575
|
+
"Bismarckia",
|
|
9576
|
+
"Brahea",
|
|
9577
|
+
"Butia",
|
|
9578
|
+
"Caryota",
|
|
9579
|
+
"Chamaedorea",
|
|
9580
|
+
"Chamaerops",
|
|
9581
|
+
"Coccothrinax",
|
|
9582
|
+
"Cocos",
|
|
9583
|
+
"Dypsis",
|
|
9584
|
+
"Elaeis",
|
|
9585
|
+
"Howea",
|
|
9586
|
+
"Jubaea",
|
|
9587
|
+
"Licuala",
|
|
9588
|
+
"Livistona",
|
|
9589
|
+
"Phoenix",
|
|
9590
|
+
"Pritchardia",
|
|
9591
|
+
"Ptychosperma",
|
|
9592
|
+
"Rhapis",
|
|
9593
|
+
"Roystonea",
|
|
9594
|
+
"Sabal",
|
|
9595
|
+
"Serenoa",
|
|
9596
|
+
"Syagrus",
|
|
9597
|
+
"Thrinax",
|
|
9598
|
+
"Trachycarpus",
|
|
9599
|
+
"Veitchia",
|
|
9600
|
+
"Washingtonia",
|
|
9601
|
+
"Wodyetia"
|
|
9602
|
+
])
|
|
9603
|
+
),
|
|
9604
|
+
value: palm
|
|
9605
|
+
},
|
|
9606
|
+
{ when: named(["Cupressus", "Calocedrus", "Thuja"]), value: image("columnar") },
|
|
9607
|
+
{
|
|
9608
|
+
when: expr10.any(
|
|
9609
|
+
expr10.eq(leaf, "needleleaved"),
|
|
9610
|
+
named([
|
|
9611
|
+
"Abies",
|
|
9612
|
+
"Araucaria",
|
|
9613
|
+
"Cedrus",
|
|
9614
|
+
"Cryptomeria",
|
|
9615
|
+
"Juniperus",
|
|
9616
|
+
"Larix",
|
|
9617
|
+
"Metasequoia",
|
|
9618
|
+
"Picea",
|
|
9619
|
+
"Pinus",
|
|
9620
|
+
"Pseudotsuga",
|
|
9621
|
+
"Sequoia",
|
|
9622
|
+
"Sequoiadendron",
|
|
9623
|
+
"Taxodium",
|
|
9624
|
+
"Taxus",
|
|
9625
|
+
"Tsuga"
|
|
9626
|
+
])
|
|
9627
|
+
),
|
|
9628
|
+
value: image("conifer")
|
|
9629
|
+
},
|
|
9630
|
+
{
|
|
9631
|
+
when: named([
|
|
9632
|
+
"Acacia",
|
|
9633
|
+
"Albizia",
|
|
9634
|
+
"Arbutus",
|
|
9635
|
+
"Bursera",
|
|
9636
|
+
"Ceratonia",
|
|
9637
|
+
"Delonix",
|
|
9638
|
+
"Ficus",
|
|
9639
|
+
"Gleditsia",
|
|
9640
|
+
"Jacaranda",
|
|
9641
|
+
"Olea",
|
|
9642
|
+
"Quercus",
|
|
9643
|
+
"Robinia",
|
|
9644
|
+
"Schinus",
|
|
9645
|
+
"Sophora",
|
|
9646
|
+
"Styphnolobium",
|
|
9647
|
+
"Tamarix"
|
|
9648
|
+
]),
|
|
9649
|
+
value: image("open")
|
|
9650
|
+
},
|
|
9651
|
+
{
|
|
9652
|
+
when: named([
|
|
9653
|
+
"Betula",
|
|
9654
|
+
"Celtis",
|
|
9655
|
+
"Fraxinus",
|
|
9656
|
+
"Ginkgo",
|
|
9657
|
+
"Liquidambar",
|
|
9658
|
+
"Liriodendron",
|
|
9659
|
+
"Magnolia",
|
|
9660
|
+
"Platanus",
|
|
9661
|
+
"Populus",
|
|
9662
|
+
"Pyrus",
|
|
9663
|
+
"Ulmus",
|
|
9664
|
+
"Zelkova"
|
|
9665
|
+
]),
|
|
9666
|
+
value: image("tall")
|
|
9667
|
+
},
|
|
9668
|
+
{
|
|
9669
|
+
when: named([
|
|
9670
|
+
"Acer",
|
|
9671
|
+
"Aesculus",
|
|
9672
|
+
"Carpinus",
|
|
9673
|
+
"Castanea",
|
|
9674
|
+
"Catalpa",
|
|
9675
|
+
"Cercis",
|
|
9676
|
+
"Citrus",
|
|
9677
|
+
"Fagus",
|
|
9678
|
+
"Lagerstroemia",
|
|
9679
|
+
"Malus",
|
|
9680
|
+
"Melia",
|
|
9681
|
+
"Morus",
|
|
9682
|
+
"Prunus",
|
|
9683
|
+
"Sorbus",
|
|
9684
|
+
"Tilia"
|
|
9685
|
+
]),
|
|
9686
|
+
value: image("round")
|
|
9687
|
+
}
|
|
9688
|
+
],
|
|
9689
|
+
broadleaf
|
|
9690
|
+
);
|
|
9691
|
+
var diameter = expr10.toNumber(expr10.get(field9("diameterCrown")), 0);
|
|
9692
|
+
var crownFactor = expr10.divide(
|
|
9693
|
+
expr10.max(3, expr10.min(18, expr10.case([{ when: expr10.gt(diameter, 0), value: diameter }], 7))),
|
|
9694
|
+
7
|
|
9695
|
+
);
|
|
9696
|
+
var size = (divisor) => expr10.interpolate({ kind: "exponential", base: 2 }, expr10.zoom(), [
|
|
9697
|
+
[15, expr10.multiply(crownFactor, 2.1 / divisor)],
|
|
9698
|
+
[22, expr10.multiply(crownFactor, 268.8 / divisor)]
|
|
9699
|
+
]);
|
|
9700
|
+
var streetsTrees = withRenderStack8(
|
|
9701
|
+
vegetation6({
|
|
9702
|
+
// Models stay 3D in overhead and tilted views; unsupported renderers omit trees.
|
|
9703
|
+
mode: "3d",
|
|
9704
|
+
fallback: "none",
|
|
9705
|
+
visible: true,
|
|
9706
|
+
flat: {
|
|
9707
|
+
minZoom: 15.5,
|
|
9708
|
+
color: token6.color("vegetation.tree.broadleaf.a"),
|
|
9709
|
+
radius: size(2),
|
|
9710
|
+
opacity: zoom9.linear([
|
|
9711
|
+
[15.5, 0],
|
|
9712
|
+
[16, 0.12]
|
|
9713
|
+
]),
|
|
9714
|
+
blur: 0.7,
|
|
9715
|
+
pitchAlignment: "map",
|
|
9716
|
+
pitchScale: "map",
|
|
9717
|
+
strokeOpacity: 0
|
|
9718
|
+
},
|
|
9719
|
+
threeDimensional: {
|
|
9720
|
+
barkColor: token6.color("vegetation.tree.bark"),
|
|
9721
|
+
broadleafColors: ["a", "b", "c", "d"].map(
|
|
9722
|
+
(shade) => token6.color(`vegetation.tree.broadleaf.${shade}`)
|
|
9723
|
+
),
|
|
9724
|
+
coniferColors: ["a", "b", "c"].map(
|
|
9725
|
+
(shade) => token6.color(`vegetation.tree.conifer.${shade}`)
|
|
9726
|
+
),
|
|
9727
|
+
palmColors: ["a", "b", "c"].map((shade) => token6.color(`vegetation.tree.broadleaf.${shade}`)),
|
|
9728
|
+
crownScale: 1,
|
|
9729
|
+
heightScale: 1,
|
|
9730
|
+
finish: "faceted",
|
|
9731
|
+
edges: 0,
|
|
9732
|
+
forms: {
|
|
9733
|
+
round: { models: ["streets-tree-round"] },
|
|
9734
|
+
open: { models: ["streets-tree-open"] },
|
|
9735
|
+
tall: { models: ["streets-tree-tall"] },
|
|
9736
|
+
conifer: { models: ["streets-tree-conifer"] },
|
|
9737
|
+
columnar: { models: ["streets-tree-columnar"] },
|
|
9738
|
+
palm: { models: ["streets-tree-palm-feather", "streets-tree-palm-fan"] }
|
|
9739
|
+
}
|
|
9740
|
+
}
|
|
9741
|
+
}),
|
|
9742
|
+
{
|
|
9743
|
+
crowns: renderPass8({
|
|
9744
|
+
placement: { above: "vegetation.trees" },
|
|
9745
|
+
// Inherit the optional tree binding from the anchor; generic OpenMapTiles omits it.
|
|
9746
|
+
requirements: ["vegetation"],
|
|
9747
|
+
renderer: "symbol",
|
|
9748
|
+
selector: { kind: "geometry", geometry: "point" },
|
|
9749
|
+
style: {
|
|
9750
|
+
minZoom: 15.5,
|
|
9751
|
+
icon: {
|
|
9752
|
+
image: crownImage,
|
|
9753
|
+
size: size(52),
|
|
9754
|
+
opacity: zoom9.linear([
|
|
9755
|
+
[15.5, 0],
|
|
9756
|
+
[16, 0.88],
|
|
9757
|
+
[18, 1]
|
|
9758
|
+
]),
|
|
9759
|
+
rotate: expr10.modulo(expr10.multiply(seed, 137.508), 360),
|
|
9760
|
+
rotationAlignment: "map",
|
|
9761
|
+
pitchAlignment: "map",
|
|
9762
|
+
allowOverlap: true,
|
|
9763
|
+
ignorePlacement: true,
|
|
9764
|
+
padding: 0
|
|
9765
|
+
}
|
|
9766
|
+
}
|
|
9767
|
+
})
|
|
9768
|
+
}
|
|
9769
|
+
);
|
|
9770
|
+
|
|
9056
9771
|
// src/official/streets.ts
|
|
9057
9772
|
var streetsDetailPalette = {
|
|
9058
9773
|
greenspace: streetsVisual.landcover.greenspace,
|
|
@@ -9130,7 +9845,7 @@ var streetsGlobalLandcoverPalette = {
|
|
|
9130
9845
|
trees: streetsVisual.globalLandcover.trees,
|
|
9131
9846
|
urban: streetsVisual.globalLandcover.urban
|
|
9132
9847
|
};
|
|
9133
|
-
var globalLandcoverOpacity =
|
|
9848
|
+
var globalLandcoverOpacity = zoom10.linear([
|
|
9134
9849
|
// At world and country zooms the source classes are the terrain palette.
|
|
9135
9850
|
// Blending them into the neutral land token desaturates forests and crops
|
|
9136
9851
|
// into one pale wash, so keep the authored colours intact until the detailed
|
|
@@ -9145,39 +9860,54 @@ var globalLandcoverOpacity = zoom9.linear([
|
|
|
9145
9860
|
[10.75, 0.25],
|
|
9146
9861
|
[11, 0]
|
|
9147
9862
|
]);
|
|
9148
|
-
var detailedLandcoverOpacity =
|
|
9863
|
+
var detailedLandcoverOpacity = zoom10.linear([
|
|
9149
9864
|
[7, 0],
|
|
9150
9865
|
[8, 0.35],
|
|
9151
9866
|
[9, 0.7],
|
|
9152
9867
|
[10, 0.9],
|
|
9153
9868
|
[11, 1]
|
|
9154
9869
|
]);
|
|
9155
|
-
var detailedUrbanGreenOpacity =
|
|
9870
|
+
var detailedUrbanGreenOpacity = zoom10.linear([
|
|
9156
9871
|
[8, 0],
|
|
9157
9872
|
[9, 1]
|
|
9158
9873
|
]);
|
|
9159
|
-
var protectedAreaOpacity =
|
|
9874
|
+
var protectedAreaOpacity = zoom10.linear([
|
|
9160
9875
|
[7, 0],
|
|
9161
9876
|
[8, 0.28],
|
|
9162
9877
|
[9, 0.32]
|
|
9163
9878
|
]);
|
|
9164
|
-
|
|
9165
|
-
|
|
9166
|
-
|
|
9167
|
-
|
|
9168
|
-
|
|
9169
|
-
|
|
9170
|
-
|
|
9171
|
-
|
|
9172
|
-
|
|
9173
|
-
|
|
9174
|
-
|
|
9175
|
-
|
|
9176
|
-
}
|
|
9177
|
-
|
|
9178
|
-
|
|
9179
|
-
|
|
9180
|
-
|
|
9879
|
+
function streetsPoiStyle(category) {
|
|
9880
|
+
const filterRank = expr11.toNumber(expr11.get(field10("poiFilterRank")), 6);
|
|
9881
|
+
const sizeRank = expr11.toNumber(expr11.get(field10("poiSizeRank")), 17);
|
|
9882
|
+
const featured = expr11.all(expr11.lte(filterRank, 0), expr11.lt(sizeRank, 5));
|
|
9883
|
+
const featuredDetail = expr11.all(expr11.lte(filterRank, 1), expr11.lt(sizeRank, 13));
|
|
9884
|
+
return {
|
|
9885
|
+
icon: {
|
|
9886
|
+
image: streetsPoiImage(),
|
|
9887
|
+
// Keep the authored 24px cell at native scale. Fractional resizing
|
|
9888
|
+
// softens the small pictogram strokes even with a correct 2x atlas.
|
|
9889
|
+
// The SVG itself fits the Maki artwork into a centered 12px box.
|
|
9890
|
+
size: 1
|
|
9891
|
+
},
|
|
9892
|
+
text: {
|
|
9893
|
+
font: streetsVisual.font.default,
|
|
9894
|
+
haloWidth: 1,
|
|
9895
|
+
haloBlur: 0,
|
|
9896
|
+
letterSpacing: 0.01,
|
|
9897
|
+
lineHeight: 1.2,
|
|
9898
|
+
maxWidth: 9,
|
|
9899
|
+
anchor: "top",
|
|
9900
|
+
offset: [0, 0.8],
|
|
9901
|
+
padding: zoom10.linear([
|
|
9902
|
+
[16, 6],
|
|
9903
|
+
[17, 4]
|
|
9904
|
+
]),
|
|
9905
|
+
size: category === "transport" ? 13 : expr11.step(expr11.zoom(), expr11.case([{ when: featured, value: 18 }], 13), [
|
|
9906
|
+
[17, expr11.case([{ when: featuredDetail, value: 18 }], 13)]
|
|
9907
|
+
])
|
|
9908
|
+
}
|
|
9909
|
+
};
|
|
9910
|
+
}
|
|
9181
9911
|
var mapboxBuildingPalette = {
|
|
9182
9912
|
fill: streetsVisual.building.fill,
|
|
9183
9913
|
outline: streetsVisual.building.outline
|
|
@@ -9206,7 +9936,7 @@ function cityRoadColorStops(minZoom, cityColor, detailedColor) {
|
|
|
9206
9936
|
function cityRoadCasingColorStops(minZoom) {
|
|
9207
9937
|
return cityRoadColorStops(minZoom, streetsDetailPalette.roadCasing, mapboxRoadPalette.roadCasing);
|
|
9208
9938
|
}
|
|
9209
|
-
var roadBorderZoom =
|
|
9939
|
+
var roadBorderZoom = 15;
|
|
9210
9940
|
var roadBorderTotalWidth = 1;
|
|
9211
9941
|
var roadWidthInterpolationBase = 1.5;
|
|
9212
9942
|
var roadSurfaceColor = mapboxRoadPalette.road;
|
|
@@ -9226,94 +9956,78 @@ var visibleBuilding3dSelector = {
|
|
|
9226
9956
|
{ field: "hide3d", kind: "compare", operator: "ne", value: "1" }
|
|
9227
9957
|
]
|
|
9228
9958
|
};
|
|
9229
|
-
var
|
|
9959
|
+
var groundedBuilding3dSelector = {
|
|
9960
|
+
kind: "all",
|
|
9961
|
+
selectors: [
|
|
9962
|
+
visibleBuilding3dSelector,
|
|
9963
|
+
{
|
|
9964
|
+
field: "renderMinHeight",
|
|
9965
|
+
coerce: "number",
|
|
9966
|
+
fallback: 0,
|
|
9967
|
+
kind: "compare",
|
|
9968
|
+
operator: "lte",
|
|
9969
|
+
value: 0
|
|
9970
|
+
},
|
|
9971
|
+
{
|
|
9972
|
+
kind: "any",
|
|
9973
|
+
selectors: [
|
|
9974
|
+
{ kind: "not", selector: { kind: "has", field: "renderHeight" } },
|
|
9975
|
+
{
|
|
9976
|
+
field: "renderHeight",
|
|
9977
|
+
coerce: "number",
|
|
9978
|
+
fallback: 5,
|
|
9979
|
+
kind: "compare",
|
|
9980
|
+
operator: "gt",
|
|
9981
|
+
value: 0
|
|
9982
|
+
}
|
|
9983
|
+
]
|
|
9984
|
+
}
|
|
9985
|
+
]
|
|
9986
|
+
};
|
|
9987
|
+
var building3dHeight = expr11.max(
|
|
9230
9988
|
0,
|
|
9231
|
-
|
|
9989
|
+
expr11.toNumber(expr11.coalesce(expr11.get(field10("renderHeight")), 5), 5)
|
|
9232
9990
|
);
|
|
9233
|
-
var building3dBase =
|
|
9991
|
+
var building3dBase = expr11.max(
|
|
9234
9992
|
0,
|
|
9235
|
-
|
|
9236
|
-
|
|
9993
|
+
expr11.min(
|
|
9994
|
+
expr11.toNumber(expr11.coalesce(expr11.get(field10("renderMinHeight")), 0), 0),
|
|
9237
9995
|
building3dHeight
|
|
9238
9996
|
)
|
|
9239
9997
|
);
|
|
9240
|
-
var circularRoadRadiusAtZ15 =
|
|
9241
|
-
var circularRoadRadiusMetres =
|
|
9242
|
-
var circularRoadOuterRadiusMetres =
|
|
9243
|
-
|
|
9998
|
+
var circularRoadRadiusAtZ15 = expr11.toNumber(expr11.get(field10("circularRadiusAtZoom15")), 0);
|
|
9999
|
+
var circularRoadRadiusMetres = expr11.toNumber(expr11.get(field10("circularRadiusMeters")), 0);
|
|
10000
|
+
var circularRoadOuterRadiusMetres = expr11.toNumber(
|
|
10001
|
+
expr11.get(field10("circularOuterRadiusMeters")),
|
|
9244
10002
|
0
|
|
9245
10003
|
);
|
|
9246
|
-
var circularRoadInnerRadiusMetres =
|
|
9247
|
-
|
|
10004
|
+
var circularRoadInnerRadiusMetres = expr11.toNumber(
|
|
10005
|
+
expr11.get(field10("circularInnerRadiusMeters")),
|
|
9248
10006
|
0
|
|
9249
10007
|
);
|
|
9250
|
-
var
|
|
9251
|
-
|
|
9252
|
-
|
|
9253
|
-
|
|
9254
|
-
|
|
9255
|
-
var roadNeedsControlledSurfaceButtCap = expr9.all(
|
|
9256
|
-
expr9.match(
|
|
9257
|
-
expr9.get(field8("brunnel")),
|
|
9258
|
-
[{ labels: ["tunnel", "bridge"], value: false }],
|
|
9259
|
-
true
|
|
9260
|
-
),
|
|
9261
|
-
expr9.eq(expr9.get(field8("foot")), "no"),
|
|
9262
|
-
expr9.match(
|
|
9263
|
-
expr9.get(field8("class")),
|
|
9264
|
-
[
|
|
9265
|
-
{
|
|
9266
|
-
labels: [
|
|
9267
|
-
"motorway",
|
|
9268
|
-
"trunk",
|
|
9269
|
-
"primary",
|
|
9270
|
-
"motorway_construction",
|
|
9271
|
-
"trunk_construction",
|
|
9272
|
-
"primary_construction"
|
|
9273
|
-
],
|
|
9274
|
-
value: true
|
|
9275
|
-
}
|
|
9276
|
-
],
|
|
9277
|
-
false
|
|
9278
|
-
)
|
|
9279
|
-
);
|
|
9280
|
-
var roadLineCap = expr9.step(
|
|
9281
|
-
expr9.zoom(),
|
|
9282
|
-
expr9.case([{ when: roadNeedsStructuralButtCap, value: "butt" }], "round"),
|
|
9283
|
-
[
|
|
9284
|
-
[
|
|
9285
|
-
17,
|
|
9286
|
-
expr9.case(
|
|
9287
|
-
[
|
|
9288
|
-
{
|
|
9289
|
-
when: expr9.any(roadNeedsStructuralButtCap, roadNeedsControlledSurfaceButtCap),
|
|
9290
|
-
value: "butt"
|
|
9291
|
-
}
|
|
9292
|
-
],
|
|
9293
|
-
"round"
|
|
9294
|
-
)
|
|
9295
|
-
]
|
|
9296
|
-
]
|
|
9297
|
-
);
|
|
9298
|
-
var roadLineJoin = zoom9.step([
|
|
10008
|
+
var roadLineCap = zoom10.step([
|
|
10009
|
+
[3, "butt"],
|
|
10010
|
+
[14, "round"]
|
|
10011
|
+
]);
|
|
10012
|
+
var roadLineJoin = zoom10.step([
|
|
9299
10013
|
[3, "miter"],
|
|
9300
10014
|
[14, "round"]
|
|
9301
10015
|
]);
|
|
9302
|
-
var pathLineCap =
|
|
10016
|
+
var pathLineCap = zoom10.step([
|
|
9303
10017
|
[12, "butt"],
|
|
9304
10018
|
[16, "round"]
|
|
9305
10019
|
]);
|
|
9306
|
-
var pathLineJoin =
|
|
10020
|
+
var pathLineJoin = zoom10.step([
|
|
9307
10021
|
[12, "miter"],
|
|
9308
10022
|
[16, "round"]
|
|
9309
10023
|
]);
|
|
9310
|
-
var hasPhysicalCircularRadii =
|
|
9311
|
-
|
|
9312
|
-
|
|
9313
|
-
|
|
10024
|
+
var hasPhysicalCircularRadii = expr11.all(
|
|
10025
|
+
expr11.gt(circularRoadRadiusMetres, 0),
|
|
10026
|
+
expr11.gt(circularRoadOuterRadiusMetres, circularRoadInnerRadiusMetres),
|
|
10027
|
+
expr11.gte(circularRoadInnerRadiusMetres, 0)
|
|
9314
10028
|
);
|
|
9315
|
-
var circularRoadBaseWidth =
|
|
9316
|
-
|
|
10029
|
+
var circularRoadBaseWidth = expr11.match(
|
|
10030
|
+
expr11.coalesce(expr11.get(field10("class")), "minor"),
|
|
9317
10031
|
[
|
|
9318
10032
|
{ labels: "motorway", value: 6 },
|
|
9319
10033
|
{ labels: "trunk", value: 5.5 },
|
|
@@ -9329,7 +10043,7 @@ var circularRoadRadius = circularRoadInnerRadius(false);
|
|
|
9329
10043
|
var circularRoadCasingRadius = circularRoadInnerRadius(true);
|
|
9330
10044
|
var circularRoadWidth = circularRoadStrokeWidth(false);
|
|
9331
10045
|
var circularRoadCasingWidth = circularRoadStrokeWidth(true);
|
|
9332
|
-
var expresswayWidthScale = 1
|
|
10046
|
+
var expresswayWidthScale = 1;
|
|
9333
10047
|
var tunnelBorderDash = [3, 3];
|
|
9334
10048
|
var tunnelBorderWidth = 1;
|
|
9335
10049
|
function circularRoadFallbackScale(level) {
|
|
@@ -9339,29 +10053,29 @@ function circularRoadFallbackScale(level) {
|
|
|
9339
10053
|
}
|
|
9340
10054
|
function circularRoadWidthAtLevel(level) {
|
|
9341
10055
|
const scale = circularRoadFallbackScale(level);
|
|
9342
|
-
return level === 15 ? circularRoadBaseWidth :
|
|
10056
|
+
return level === 15 ? circularRoadBaseWidth : expr11.multiply(circularRoadBaseWidth, scale);
|
|
9343
10057
|
}
|
|
9344
10058
|
function circularRoadCenterlineRadiusAtLevel(level) {
|
|
9345
|
-
return level === 15 ? circularRoadRadiusAtZ15 :
|
|
10059
|
+
return level === 15 ? circularRoadRadiusAtZ15 : expr11.multiply(circularRoadRadiusAtZ15, 2 ** (level - 15));
|
|
9346
10060
|
}
|
|
9347
10061
|
function circularRoadInnerRadiusAtLevel(level, casing) {
|
|
9348
10062
|
const centerlineRadius = circularRoadCenterlineRadiusAtLevel(level);
|
|
9349
|
-
const physicalInnerRadius =
|
|
10063
|
+
const physicalInnerRadius = expr11.multiply(
|
|
9350
10064
|
centerlineRadius,
|
|
9351
|
-
|
|
10065
|
+
expr11.divide(circularRoadInnerRadiusMetres, circularRoadRadiusMetres)
|
|
9352
10066
|
);
|
|
9353
|
-
const fallbackInnerRadius =
|
|
10067
|
+
const fallbackInnerRadius = expr11.subtract(
|
|
9354
10068
|
centerlineRadius,
|
|
9355
|
-
|
|
10069
|
+
expr11.divide(circularRoadWidthAtLevel(level), 2)
|
|
9356
10070
|
);
|
|
9357
|
-
const innerRadius =
|
|
10071
|
+
const innerRadius = expr11.case(
|
|
9358
10072
|
[{ when: hasPhysicalCircularRadii, value: physicalInnerRadius }],
|
|
9359
10073
|
fallbackInnerRadius
|
|
9360
10074
|
);
|
|
9361
|
-
return
|
|
10075
|
+
return expr11.max(0, casing ? expr11.subtract(innerRadius, roadBorderTotalWidth / 2) : innerRadius);
|
|
9362
10076
|
}
|
|
9363
10077
|
function circularRoadInnerRadius(casing) {
|
|
9364
|
-
return
|
|
10078
|
+
return expr11.interpolate({ kind: "exponential", base: 2 }, expr11.zoom(), [
|
|
9365
10079
|
[15, circularRoadInnerRadiusAtLevel(15, casing)],
|
|
9366
10080
|
[16, circularRoadInnerRadiusAtLevel(16, casing)],
|
|
9367
10081
|
[17, circularRoadInnerRadiusAtLevel(17, casing)],
|
|
@@ -9369,28 +10083,30 @@ function circularRoadInnerRadius(casing) {
|
|
|
9369
10083
|
[19, circularRoadInnerRadiusAtLevel(19, casing)],
|
|
9370
10084
|
[20, circularRoadInnerRadiusAtLevel(20, casing)],
|
|
9371
10085
|
[21, circularRoadInnerRadiusAtLevel(21, casing)],
|
|
9372
|
-
[22, circularRoadInnerRadiusAtLevel(22, casing)]
|
|
10086
|
+
[22, circularRoadInnerRadiusAtLevel(22, casing)],
|
|
10087
|
+
[23, circularRoadInnerRadiusAtLevel(23, casing)],
|
|
10088
|
+
[24, circularRoadInnerRadiusAtLevel(24, casing)]
|
|
9373
10089
|
]);
|
|
9374
10090
|
}
|
|
9375
10091
|
function circularRoadStrokeWidthAtLevel(level, casing) {
|
|
9376
10092
|
const fallbackWidth = circularRoadWidthAtLevel(level);
|
|
9377
10093
|
const centerlineRadius = circularRoadCenterlineRadiusAtLevel(level);
|
|
9378
|
-
const physicalWidth =
|
|
10094
|
+
const physicalWidth = expr11.multiply(
|
|
9379
10095
|
centerlineRadius,
|
|
9380
|
-
|
|
9381
|
-
|
|
10096
|
+
expr11.divide(
|
|
10097
|
+
expr11.subtract(circularRoadOuterRadiusMetres, circularRoadInnerRadiusMetres),
|
|
9382
10098
|
circularRoadRadiusMetres
|
|
9383
10099
|
)
|
|
9384
10100
|
);
|
|
9385
|
-
const physicalOutput = casing ?
|
|
9386
|
-
const fallbackOutput = casing ?
|
|
9387
|
-
return
|
|
10101
|
+
const physicalOutput = casing ? expr11.add(physicalWidth, roadBorderTotalWidth) : physicalWidth;
|
|
10102
|
+
const fallbackOutput = casing ? expr11.add(fallbackWidth, roadBorderTotalWidth) : fallbackWidth;
|
|
10103
|
+
return expr11.case(
|
|
9388
10104
|
[{ when: hasPhysicalCircularRadii, value: physicalOutput }],
|
|
9389
10105
|
fallbackOutput
|
|
9390
10106
|
);
|
|
9391
10107
|
}
|
|
9392
10108
|
function circularRoadStrokeWidth(casing) {
|
|
9393
|
-
return
|
|
10109
|
+
return expr11.interpolate({ kind: "exponential", base: 2 }, expr11.zoom(), [
|
|
9394
10110
|
[15, circularRoadStrokeWidthAtLevel(15, casing)],
|
|
9395
10111
|
[16, circularRoadStrokeWidthAtLevel(16, casing)],
|
|
9396
10112
|
[17, circularRoadStrokeWidthAtLevel(17, casing)],
|
|
@@ -9398,20 +10114,22 @@ function circularRoadStrokeWidth(casing) {
|
|
|
9398
10114
|
[19, circularRoadStrokeWidthAtLevel(19, casing)],
|
|
9399
10115
|
[20, circularRoadStrokeWidthAtLevel(20, casing)],
|
|
9400
10116
|
[21, circularRoadStrokeWidthAtLevel(21, casing)],
|
|
9401
|
-
[22, circularRoadStrokeWidthAtLevel(22, casing)]
|
|
10117
|
+
[22, circularRoadStrokeWidthAtLevel(22, casing)],
|
|
10118
|
+
[23, circularRoadStrokeWidthAtLevel(23, casing)],
|
|
10119
|
+
[24, circularRoadStrokeWidthAtLevel(24, casing)]
|
|
9402
10120
|
]);
|
|
9403
10121
|
}
|
|
9404
10122
|
function roadWidth(widths, oneWayScale, rampWidths) {
|
|
9405
10123
|
const augmentedWidths = [...widths].sort(([left], [right]) => left - right);
|
|
9406
10124
|
const widthOutput = (level, width) => {
|
|
9407
|
-
const ordinaryWidth = oneWayScale === 1 ? width :
|
|
9408
|
-
|
|
10125
|
+
const ordinaryWidth = oneWayScale === 1 ? width : expr11.match(
|
|
10126
|
+
expr11.get(field10("oneway")),
|
|
9409
10127
|
[{ labels: [1, -1], value: width * oneWayScale }],
|
|
9410
10128
|
width
|
|
9411
10129
|
);
|
|
9412
10130
|
const rampWidth = rampWidths?.find(([rampLevel]) => rampLevel === level)?.[1];
|
|
9413
|
-
const surfaceWidth = rampWidth === void 0 ? ordinaryWidth :
|
|
9414
|
-
[{ when:
|
|
10131
|
+
const surfaceWidth = rampWidth === void 0 ? ordinaryWidth : expr11.case(
|
|
10132
|
+
[{ when: expr11.eq(expr11.get(field10("ramp")), 1), value: rampWidth }],
|
|
9415
10133
|
ordinaryWidth
|
|
9416
10134
|
);
|
|
9417
10135
|
return surfaceWidth;
|
|
@@ -9421,35 +10139,26 @@ function roadWidth(widths, oneWayScale, rampWidths) {
|
|
|
9421
10139
|
);
|
|
9422
10140
|
const firstWidthStop = widthStops[0];
|
|
9423
10141
|
if (firstWidthStop === void 0) throw new Error("Road widths require at least one zoom stop.");
|
|
9424
|
-
return
|
|
10142
|
+
return expr11.interpolate({ base: roadWidthInterpolationBase, kind: "exponential" }, expr11.zoom(), [
|
|
9425
10143
|
firstWidthStop,
|
|
9426
10144
|
...widthStops.slice(1)
|
|
9427
10145
|
]);
|
|
9428
10146
|
}
|
|
9429
|
-
function
|
|
9430
|
-
return
|
|
9431
|
-
|
|
9432
|
-
|
|
9433
|
-
|
|
9434
|
-
|
|
9435
|
-
[
|
|
9436
|
-
[15, 0.75],
|
|
9437
|
-
[18, 1],
|
|
9438
|
-
[22, 1.5]
|
|
10147
|
+
function roadCasingWidth(major) {
|
|
10148
|
+
return expr11.interpolate({ kind: "exponential", base: 1.5 }, expr11.zoom(), [
|
|
10149
|
+
[
|
|
10150
|
+
14,
|
|
10151
|
+
major ? expr11.case([{ when: expr11.eq(expr11.get(field10("ramp")), 1), value: 0.8 }], 1) : 0.8
|
|
10152
|
+
],
|
|
10153
|
+
[22, 2]
|
|
9439
10154
|
]);
|
|
9440
10155
|
}
|
|
9441
|
-
var
|
|
9442
|
-
[
|
|
9443
|
-
[15.5, tunnelBorderWidth],
|
|
9444
|
-
[22, tunnelBorderWidth]
|
|
9445
|
-
]);
|
|
9446
|
-
var pathCasingStrokeWidth = zoom9.exponential(1.5, [
|
|
9447
|
-
[15, 0],
|
|
9448
|
-
[15.5, 0.5],
|
|
10156
|
+
var pathCasingStrokeWidth = zoom10.exponential(1.5, [
|
|
10157
|
+
[14, 0.5],
|
|
9449
10158
|
[18, 1],
|
|
9450
10159
|
[22, 2]
|
|
9451
10160
|
]);
|
|
9452
|
-
var pathTunnelCasingWidth =
|
|
10161
|
+
var pathTunnelCasingWidth = zoom10.linear([
|
|
9453
10162
|
[15, 0],
|
|
9454
10163
|
[15.5, tunnelBorderWidth],
|
|
9455
10164
|
[22, tunnelBorderWidth]
|
|
@@ -9459,62 +10168,15 @@ var mapboxPathWidthStops = [
|
|
|
9459
10168
|
[18, 6],
|
|
9460
10169
|
[22, 80]
|
|
9461
10170
|
];
|
|
9462
|
-
var
|
|
9463
|
-
|
|
9464
|
-
[15,
|
|
9465
|
-
[16,
|
|
9466
|
-
[18, 2],
|
|
9467
|
-
[22, 20]
|
|
9468
|
-
];
|
|
9469
|
-
var unpavedPathCondition = expr9.eq(expr9.get(field8("surface")), "unpaved");
|
|
9470
|
-
var contextualPathLineWidth = expr9.interpolate(
|
|
9471
|
-
{ base: 1.5, kind: "exponential" },
|
|
9472
|
-
expr9.zoom(),
|
|
9473
|
-
[
|
|
9474
|
-
[12, expr9.case([{ when: unpavedPathCondition, value: 0 }], 0)],
|
|
9475
|
-
[15, expr9.case([{ when: unpavedPathCondition, value: 0.75 }], 1)],
|
|
9476
|
-
[16, expr9.case([{ when: unpavedPathCondition, value: 1 }], 1.5)],
|
|
9477
|
-
[17, expr9.case([{ when: unpavedPathCondition, value: 1.4 }], 3)],
|
|
9478
|
-
[18, expr9.case([{ when: unpavedPathCondition, value: 2 }], 6)],
|
|
9479
|
-
[19, expr9.case([{ when: unpavedPathCondition, value: 3.7 }], 12)],
|
|
9480
|
-
[20, expr9.case([{ when: unpavedPathCondition, value: 7.5 }], 22)],
|
|
9481
|
-
[22, expr9.case([{ when: unpavedPathCondition, value: 20 }], 60)]
|
|
9482
|
-
]
|
|
9483
|
-
);
|
|
9484
|
-
var contextualPathColor = expr9.interpolate({ kind: "linear" }, expr9.zoom(), [
|
|
9485
|
-
[
|
|
9486
|
-
15,
|
|
9487
|
-
expr9.case(
|
|
9488
|
-
[{ when: unpavedPathCondition, value: streetsDetailPalette.parkPath }],
|
|
9489
|
-
mapboxRoadPalette.pathAtZ15
|
|
9490
|
-
)
|
|
9491
|
-
],
|
|
9492
|
-
[
|
|
9493
|
-
16,
|
|
9494
|
-
expr9.case(
|
|
9495
|
-
[{ when: unpavedPathCondition, value: streetsDetailPalette.parkPath }],
|
|
9496
|
-
mapboxRoadPalette.pathFromZ16
|
|
9497
|
-
)
|
|
9498
|
-
]
|
|
10171
|
+
var contextualPathLineWidth = zoom10.exponential(1.5, mapboxPathWidthStops);
|
|
10172
|
+
var contextualPathColor = expr11.interpolate({ kind: "linear" }, expr11.zoom(), [
|
|
10173
|
+
[15, mapboxRoadPalette.pathAtZ15],
|
|
10174
|
+
[16, mapboxRoadPalette.pathFromZ16]
|
|
9499
10175
|
]);
|
|
9500
|
-
var
|
|
9501
|
-
|
|
9502
|
-
mapboxRoadPalette.pathCasing
|
|
9503
|
-
);
|
|
9504
|
-
var contextualPathCasingWidth = expr9.interpolate(
|
|
9505
|
-
{ base: 1.5, kind: "exponential" },
|
|
9506
|
-
expr9.zoom(),
|
|
9507
|
-
[
|
|
9508
|
-
[15, expr9.case([{ when: unpavedPathCondition, value: 0 }], 0)],
|
|
9509
|
-
[15.5, expr9.case([{ when: unpavedPathCondition, value: 0 }], 0.5)],
|
|
9510
|
-
[18, expr9.case([{ when: unpavedPathCondition, value: 0 }], 1)],
|
|
9511
|
-
[22, expr9.case([{ when: unpavedPathCondition, value: 0 }], 2)]
|
|
9512
|
-
]
|
|
9513
|
-
);
|
|
9514
|
-
var googleParkPathClasses = ["pathway", "footway", "steps", "pedestrian"];
|
|
9515
|
-
function googleParkPathRefinements() {
|
|
10176
|
+
var parkPathClasses = ["pathway", "footway", "steps", "pedestrian"];
|
|
10177
|
+
function parkPathRefinements() {
|
|
9516
10178
|
return Object.fromEntries(
|
|
9517
|
-
|
|
10179
|
+
parkPathClasses.flatMap(
|
|
9518
10180
|
(roadClass) => ["surface", "bridge"].flatMap((structure) => [
|
|
9519
10181
|
[
|
|
9520
10182
|
`${roadClass}-${structure}-fill`,
|
|
@@ -9522,6 +10184,7 @@ function googleParkPathRefinements() {
|
|
|
9522
10184
|
renderer: "line",
|
|
9523
10185
|
style: {
|
|
9524
10186
|
color: roadClass === "steps" ? mapboxRoadPalette.pathFromZ16 : contextualPathColor,
|
|
10187
|
+
minZoom: roadClass === "steps" ? 14 : structure === "surface" ? 12 : roadClass === "pedestrian" ? 13 : 14,
|
|
9525
10188
|
...roadClass === "steps" ? { dash: [0.18, 0.15] } : {},
|
|
9526
10189
|
width: contextualPathLineWidth
|
|
9527
10190
|
},
|
|
@@ -9533,9 +10196,10 @@ function googleParkPathRefinements() {
|
|
|
9533
10196
|
refineRenderTarget3({
|
|
9534
10197
|
renderer: "line",
|
|
9535
10198
|
style: {
|
|
9536
|
-
color:
|
|
10199
|
+
color: mapboxRoadPalette.pathCasing,
|
|
10200
|
+
minZoom: roadClass === "steps" || roadClass === "pedestrian" && structure === "surface" ? 14 : 15,
|
|
9537
10201
|
gapWidth: roadClass === "steps" ? 0 : contextualPathLineWidth,
|
|
9538
|
-
width: roadClass === "steps" ? contextualPathLineWidth :
|
|
10202
|
+
width: roadClass === "steps" ? contextualPathLineWidth : pathCasingStrokeWidth
|
|
9539
10203
|
},
|
|
9540
10204
|
target: `roads.classes.${roadClass}.${structure}.casing`
|
|
9541
10205
|
})
|
|
@@ -9585,7 +10249,7 @@ var namedCitySelector = {
|
|
|
9585
10249
|
};
|
|
9586
10250
|
function streetsBoundaryRenderStack() {
|
|
9587
10251
|
return {
|
|
9588
|
-
admin2Background:
|
|
10252
|
+
admin2Background: renderPass9({
|
|
9589
10253
|
placement: { below: "boundaries.admin4" },
|
|
9590
10254
|
feature: "boundary",
|
|
9591
10255
|
renderer: "line",
|
|
@@ -9611,23 +10275,23 @@ function streetsBoundaryRenderStack() {
|
|
|
9611
10275
|
]
|
|
9612
10276
|
},
|
|
9613
10277
|
style: {
|
|
9614
|
-
blur:
|
|
10278
|
+
blur: zoom10.linear([
|
|
9615
10279
|
[3, 0],
|
|
9616
10280
|
[12, 2]
|
|
9617
10281
|
]),
|
|
9618
10282
|
color: streetsVisual.boundary.halo,
|
|
9619
10283
|
minZoom: 1,
|
|
9620
|
-
opacity:
|
|
10284
|
+
opacity: zoom10.linear([
|
|
9621
10285
|
[3, 0],
|
|
9622
10286
|
[4, 0.5]
|
|
9623
10287
|
]),
|
|
9624
|
-
width:
|
|
10288
|
+
width: zoom10.linear([
|
|
9625
10289
|
[3, 4],
|
|
9626
10290
|
[12, 8]
|
|
9627
10291
|
])
|
|
9628
10292
|
}
|
|
9629
10293
|
}),
|
|
9630
|
-
admin4Background:
|
|
10294
|
+
admin4Background: renderPass9({
|
|
9631
10295
|
placement: { below: "boundaries.admin4" },
|
|
9632
10296
|
feature: "boundary",
|
|
9633
10297
|
renderer: "line",
|
|
@@ -9653,17 +10317,17 @@ function streetsBoundaryRenderStack() {
|
|
|
9653
10317
|
]
|
|
9654
10318
|
},
|
|
9655
10319
|
style: {
|
|
9656
|
-
blur:
|
|
10320
|
+
blur: zoom10.linear([
|
|
9657
10321
|
[3, 0],
|
|
9658
10322
|
[12, 1]
|
|
9659
10323
|
]),
|
|
9660
10324
|
color: streetsVisual.boundary.halo,
|
|
9661
10325
|
minZoom: 2,
|
|
9662
|
-
opacity:
|
|
10326
|
+
opacity: zoom10.linear([
|
|
9663
10327
|
[2, 0],
|
|
9664
10328
|
[4, 0.42]
|
|
9665
10329
|
]),
|
|
9666
|
-
width:
|
|
10330
|
+
width: zoom10.linear([
|
|
9667
10331
|
[3, 2.4],
|
|
9668
10332
|
[6, 3.1],
|
|
9669
10333
|
[12, 4.2]
|
|
@@ -9674,7 +10338,7 @@ function streetsBoundaryRenderStack() {
|
|
|
9674
10338
|
// module deliberately exposes only the stable admin-2/admin-4 pair.
|
|
9675
10339
|
// Standard uses the next tier as a restrained dotted municipal cue from
|
|
9676
10340
|
// metro zooms onward, so Streets adds it as an explicit semantic pass.
|
|
9677
|
-
admin6:
|
|
10341
|
+
admin6: renderPass9({
|
|
9678
10342
|
placement: { above: "boundaries.admin4" },
|
|
9679
10343
|
feature: "boundary",
|
|
9680
10344
|
renderer: "line",
|
|
@@ -9703,12 +10367,12 @@ function streetsBoundaryRenderStack() {
|
|
|
9703
10367
|
color: streetsVisual.boundary.regional,
|
|
9704
10368
|
dash: [1, 1.5],
|
|
9705
10369
|
minZoom: 8,
|
|
9706
|
-
opacity:
|
|
10370
|
+
opacity: zoom10.linear([
|
|
9707
10371
|
[8, 0],
|
|
9708
10372
|
[9, 0.5],
|
|
9709
10373
|
[12, 0.68]
|
|
9710
10374
|
]),
|
|
9711
|
-
width:
|
|
10375
|
+
width: zoom10.linear([
|
|
9712
10376
|
[8, 0.45],
|
|
9713
10377
|
[10, 0.7],
|
|
9714
10378
|
[12, 0.95]
|
|
@@ -9719,7 +10383,27 @@ function streetsBoundaryRenderStack() {
|
|
|
9719
10383
|
}
|
|
9720
10384
|
function streetsLandRenderStack() {
|
|
9721
10385
|
return {
|
|
9722
|
-
|
|
10386
|
+
// A park polygon is the base surface. Explicit lawns and meadows inside
|
|
10387
|
+
// it must remain visible instead of being painted over by the park fill.
|
|
10388
|
+
grassDetail: refineRenderTarget3({
|
|
10389
|
+
placement: { above: "land.landuse.recreation.fill" },
|
|
10390
|
+
target: "land.landcover.grass.fill"
|
|
10391
|
+
}),
|
|
10392
|
+
meadowDetail: refineRenderTarget3({
|
|
10393
|
+
placement: { above: "land.landcover.grass.fill" },
|
|
10394
|
+
target: "land.landcover.meadow.fill"
|
|
10395
|
+
}),
|
|
10396
|
+
// Mapped parking surfaces cut through broad park/forest polygons. They
|
|
10397
|
+
// remain below the road network and only fill areas present in the tiles.
|
|
10398
|
+
parkingSurface: refineRenderTarget3({
|
|
10399
|
+
placement: "above-land",
|
|
10400
|
+
target: "land.landuse.parking.fill"
|
|
10401
|
+
}),
|
|
10402
|
+
parkingOutline: refineRenderTarget3({
|
|
10403
|
+
placement: { above: "land.landuse.parking.fill" },
|
|
10404
|
+
target: "land.landuse.parking.outline"
|
|
10405
|
+
}),
|
|
10406
|
+
businessArea: renderPass9({
|
|
9723
10407
|
placement: { above: "land.landuse.residential.fill" },
|
|
9724
10408
|
feature: "landuse",
|
|
9725
10409
|
renderer: "fill",
|
|
@@ -9737,7 +10421,7 @@ function streetsBuildingRenderStack() {
|
|
|
9737
10421
|
// Keep just enough ambient separation for dense footprint clusters. The
|
|
9738
10422
|
// fill and its close-colour outline carry the 2D building hierarchy; a
|
|
9739
10423
|
// dark shadow at z15 would turn every footprint into a heavy sticker.
|
|
9740
|
-
flatShadow:
|
|
10424
|
+
flatShadow: renderPass9({
|
|
9741
10425
|
placement: { below: "buildings.flat.fill" },
|
|
9742
10426
|
feature: "building",
|
|
9743
10427
|
renderer: "line",
|
|
@@ -9745,7 +10429,7 @@ function streetsBuildingRenderStack() {
|
|
|
9745
10429
|
blur: 2,
|
|
9746
10430
|
color: buildingShadowColor,
|
|
9747
10431
|
minZoom: 15.5,
|
|
9748
|
-
opacity:
|
|
10432
|
+
opacity: zoom10.linear([
|
|
9749
10433
|
[15.5, 0],
|
|
9750
10434
|
[16, 0.03],
|
|
9751
10435
|
[18, 0.08],
|
|
@@ -9753,7 +10437,7 @@ function streetsBuildingRenderStack() {
|
|
|
9753
10437
|
]),
|
|
9754
10438
|
translate: [0.5, 0.75],
|
|
9755
10439
|
translateAnchor: "viewport",
|
|
9756
|
-
width:
|
|
10440
|
+
width: zoom10.linear([
|
|
9757
10441
|
[15.5, 0.5],
|
|
9758
10442
|
[16, 1],
|
|
9759
10443
|
[18, 3],
|
|
@@ -9761,38 +10445,69 @@ function streetsBuildingRenderStack() {
|
|
|
9761
10445
|
])
|
|
9762
10446
|
}
|
|
9763
10447
|
}),
|
|
9764
|
-
shadowSoft:
|
|
10448
|
+
shadowSoft: renderPass9({
|
|
9765
10449
|
placement: { below: "buildings.flat.fill" },
|
|
9766
10450
|
feature: "building",
|
|
9767
10451
|
renderer: "line",
|
|
9768
|
-
selector:
|
|
10452
|
+
selector: groundedBuilding3dSelector,
|
|
9769
10453
|
style: {
|
|
9770
|
-
|
|
9771
|
-
|
|
9772
|
-
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
10454
|
+
// A diffuse contact band, not a displaced footprint. It stays attached
|
|
10455
|
+
// to the walls when the camera rotates and fades in at street detail.
|
|
10456
|
+
blur: zoom10.linear([
|
|
10457
|
+
[15.5, 2],
|
|
10458
|
+
[18, 6],
|
|
10459
|
+
[20, 10]
|
|
10460
|
+
]),
|
|
10461
|
+
cap: "round",
|
|
10462
|
+
color: streetsVisual.building.contactShadow,
|
|
10463
|
+
join: "round",
|
|
10464
|
+
minZoom: 15.5,
|
|
10465
|
+
opacity: zoom10.linear([
|
|
10466
|
+
[15.5, 0],
|
|
10467
|
+
[16.5, 0.12],
|
|
10468
|
+
[18, 0.22],
|
|
10469
|
+
[20, 0.24]
|
|
10470
|
+
]),
|
|
9776
10471
|
visibilityGroup: "building",
|
|
9777
|
-
width:
|
|
10472
|
+
width: zoom10.linear([
|
|
10473
|
+
[15.5, 1],
|
|
10474
|
+
[16.5, 4],
|
|
10475
|
+
[18, 10],
|
|
10476
|
+
[20, 18]
|
|
10477
|
+
])
|
|
9778
10478
|
}
|
|
9779
10479
|
}),
|
|
9780
|
-
shadowCore:
|
|
10480
|
+
shadowCore: renderPass9({
|
|
9781
10481
|
placement: { below: "buildings.flat.fill" },
|
|
9782
10482
|
feature: "building",
|
|
9783
|
-
renderer: "
|
|
9784
|
-
selector:
|
|
10483
|
+
renderer: "line",
|
|
10484
|
+
selector: groundedBuilding3dSelector,
|
|
9785
10485
|
style: {
|
|
9786
|
-
|
|
9787
|
-
|
|
9788
|
-
|
|
9789
|
-
|
|
9790
|
-
|
|
9791
|
-
|
|
9792
|
-
|
|
10486
|
+
blur: zoom10.linear([
|
|
10487
|
+
[15.5, 0.5],
|
|
10488
|
+
[18, 1.5],
|
|
10489
|
+
[20, 2.5]
|
|
10490
|
+
]),
|
|
10491
|
+
cap: "round",
|
|
10492
|
+
color: streetsVisual.building.contactShadow,
|
|
10493
|
+
join: "round",
|
|
10494
|
+
minZoom: 15.5,
|
|
10495
|
+
opacity: zoom10.linear([
|
|
10496
|
+
[15.5, 0],
|
|
10497
|
+
[16.5, 0.08],
|
|
10498
|
+
[18, 0.16],
|
|
10499
|
+
[20, 0.18]
|
|
10500
|
+
]),
|
|
10501
|
+
visibilityGroup: "building",
|
|
10502
|
+
width: zoom10.linear([
|
|
10503
|
+
[15.5, 0.5],
|
|
10504
|
+
[16.5, 1],
|
|
10505
|
+
[18, 2.5],
|
|
10506
|
+
[20, 4]
|
|
10507
|
+
])
|
|
9793
10508
|
}
|
|
9794
10509
|
}),
|
|
9795
|
-
extrusion:
|
|
10510
|
+
extrusion: renderPass9({
|
|
9796
10511
|
placement: { above: "buildings.flat.outline" },
|
|
9797
10512
|
feature: "building",
|
|
9798
10513
|
renderer: "extrusion",
|
|
@@ -9811,7 +10526,89 @@ function streetsBuildingRenderStack() {
|
|
|
9811
10526
|
}
|
|
9812
10527
|
function streetsLabelRenderStack() {
|
|
9813
10528
|
return {
|
|
9814
|
-
|
|
10529
|
+
// Ground passes belong to Streets' label design. They do not depend on the
|
|
10530
|
+
// optional class targets emitted by a replacement roads module. Keep the
|
|
10531
|
+
// structural roads last within this group so they win road-name collisions.
|
|
10532
|
+
streetPedestrian: streetNamePass(
|
|
10533
|
+
"pedestrian",
|
|
10534
|
+
12,
|
|
10535
|
+
["path", "path_construction"],
|
|
10536
|
+
["pedestrian"]
|
|
10537
|
+
),
|
|
10538
|
+
streetPaths: streetNamePass(
|
|
10539
|
+
"path",
|
|
10540
|
+
15,
|
|
10541
|
+
["path", "path_construction"],
|
|
10542
|
+
["path", "bridleway", "corridor", "footway", "cycleway", "steps"]
|
|
10543
|
+
),
|
|
10544
|
+
streetService: streetNamePass("service", 15, [
|
|
10545
|
+
"service",
|
|
10546
|
+
"busway",
|
|
10547
|
+
"bus_guideway",
|
|
10548
|
+
"service_construction"
|
|
10549
|
+
]),
|
|
10550
|
+
streetMinor: streetNamePass("street", 13, [
|
|
10551
|
+
"minor",
|
|
10552
|
+
"residential",
|
|
10553
|
+
"unclassified",
|
|
10554
|
+
"minor_construction"
|
|
10555
|
+
]),
|
|
10556
|
+
streetTertiary: streetNamePass("major", 13, ["tertiary", "tertiary_construction"]),
|
|
10557
|
+
streetArterial: streetNamePass("major", 12, [
|
|
10558
|
+
"primary",
|
|
10559
|
+
"primary_construction",
|
|
10560
|
+
"secondary",
|
|
10561
|
+
"secondary_construction"
|
|
10562
|
+
]),
|
|
10563
|
+
streetHighway: streetNamePass("major", 10, [
|
|
10564
|
+
"motorway",
|
|
10565
|
+
"motorway_construction",
|
|
10566
|
+
"trunk",
|
|
10567
|
+
"trunk_construction"
|
|
10568
|
+
]),
|
|
10569
|
+
ferry: renderPass9({
|
|
10570
|
+
feature: "roadName",
|
|
10571
|
+
placement: "below-labels",
|
|
10572
|
+
renderer: "symbol",
|
|
10573
|
+
selector: {
|
|
10574
|
+
kind: "all",
|
|
10575
|
+
selectors: [
|
|
10576
|
+
{ field: "name", kind: "has" },
|
|
10577
|
+
{ field: "name", kind: "compare", operator: "ne", value: "" },
|
|
10578
|
+
{
|
|
10579
|
+
kind: "any",
|
|
10580
|
+
selectors: [
|
|
10581
|
+
{ field: "class", kind: "compare", operator: "eq", value: "ferry" },
|
|
10582
|
+
{ field: "subclass", kind: "compare", operator: "eq", value: "ferry" }
|
|
10583
|
+
]
|
|
10584
|
+
}
|
|
10585
|
+
]
|
|
10586
|
+
},
|
|
10587
|
+
style: {
|
|
10588
|
+
minZoom: 15,
|
|
10589
|
+
placement: "line",
|
|
10590
|
+
spacing: 250,
|
|
10591
|
+
text: {
|
|
10592
|
+
field: expr11.get(field10("name")),
|
|
10593
|
+
font: streetsVisual.font.default,
|
|
10594
|
+
color: streetsVisual.label.ferry,
|
|
10595
|
+
haloColor: streetsVisual.label.ferryHalo,
|
|
10596
|
+
haloWidth: 1,
|
|
10597
|
+
haloBlur: 1,
|
|
10598
|
+
letterSpacing: 0.01,
|
|
10599
|
+
maxAngle: 30,
|
|
10600
|
+
padding: 1,
|
|
10601
|
+
pitchAlignment: "viewport",
|
|
10602
|
+
rotationAlignment: "map",
|
|
10603
|
+
size: zoom10.linear([
|
|
10604
|
+
[10, 6.5],
|
|
10605
|
+
[18, 13]
|
|
10606
|
+
]),
|
|
10607
|
+
transform: "uppercase"
|
|
10608
|
+
}
|
|
10609
|
+
}
|
|
10610
|
+
}),
|
|
10611
|
+
settlementMarker: renderPass9({
|
|
9815
10612
|
placement: { below: "labels.places.city" },
|
|
9816
10613
|
feature: "place",
|
|
9817
10614
|
renderer: "circle",
|
|
@@ -9820,7 +10617,7 @@ function streetsLabelRenderStack() {
|
|
|
9820
10617
|
color: streetsVisual.label.settlement,
|
|
9821
10618
|
maxZoom: 8,
|
|
9822
10619
|
minZoom: 2,
|
|
9823
|
-
radius:
|
|
10620
|
+
radius: expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 3, [
|
|
9824
10621
|
[3, 2.5],
|
|
9825
10622
|
[7, 2]
|
|
9826
10623
|
]),
|
|
@@ -9834,7 +10631,15 @@ function streetsLabelRenderStack() {
|
|
|
9834
10631
|
kind: "all",
|
|
9835
10632
|
selectors: [
|
|
9836
10633
|
{ field: "name", kind: "has" },
|
|
9837
|
-
{ field: "class", kind: "compare", operator: "eq", value: "country" }
|
|
10634
|
+
{ field: "class", kind: "compare", operator: "eq", value: "country" },
|
|
10635
|
+
{
|
|
10636
|
+
fallback: rankAtMost(4),
|
|
10637
|
+
kind: "step",
|
|
10638
|
+
stops: [
|
|
10639
|
+
{ selector: rankAtMost(4), zoom: 3 },
|
|
10640
|
+
{ selector: { kind: "literal", value: true }, zoom: 5 }
|
|
10641
|
+
]
|
|
10642
|
+
}
|
|
9838
10643
|
]
|
|
9839
10644
|
},
|
|
9840
10645
|
style: {},
|
|
@@ -9928,8 +10733,11 @@ function streetsLabelRenderStack() {
|
|
|
9928
10733
|
fallback: rankAtMost(18),
|
|
9929
10734
|
kind: "step",
|
|
9930
10735
|
stops: [
|
|
9931
|
-
|
|
9932
|
-
|
|
10736
|
+
// World ranks are local to each source zoom: Manhattan, for
|
|
10737
|
+
// example, moves from rank 11 at z12 to 30 at z13. Once city
|
|
10738
|
+
// detail begins, retain the producer's candidates and let
|
|
10739
|
+
// collisions choose which fit instead of hiding them again.
|
|
10740
|
+
{ selector: { kind: "literal", value: true }, zoom: 12 }
|
|
9933
10741
|
]
|
|
9934
10742
|
}
|
|
9935
10743
|
]
|
|
@@ -9939,9 +10747,50 @@ function streetsLabelRenderStack() {
|
|
|
9939
10747
|
})
|
|
9940
10748
|
};
|
|
9941
10749
|
}
|
|
10750
|
+
function streetsRoadEligibility() {
|
|
10751
|
+
return Object.fromEntries(
|
|
10752
|
+
["motorway", "trunk", "primary", "secondary", "tertiary"].map((roadClass) => [
|
|
10753
|
+
`${roadClass}-surface-eligibility`,
|
|
10754
|
+
refineRenderTarget3({
|
|
10755
|
+
renderer: "line",
|
|
10756
|
+
selector: {
|
|
10757
|
+
kind: "all",
|
|
10758
|
+
selectors: [
|
|
10759
|
+
{ kind: "geometry", geometry: "line" },
|
|
10760
|
+
{ kind: "in", field: "class", values: [roadClass, `${roadClass}_construction`] },
|
|
10761
|
+
{
|
|
10762
|
+
kind: "step",
|
|
10763
|
+
fallback: { kind: "literal", value: true },
|
|
10764
|
+
stops: [
|
|
10765
|
+
{
|
|
10766
|
+
zoom: 5,
|
|
10767
|
+
selector: {
|
|
10768
|
+
kind: "all",
|
|
10769
|
+
selectors: [
|
|
10770
|
+
{ kind: "compare", field: "brunnel", operator: "ne", value: "tunnel" },
|
|
10771
|
+
{ kind: "compare", field: "brunnel", operator: "ne", value: "bridge" }
|
|
10772
|
+
]
|
|
10773
|
+
}
|
|
10774
|
+
}
|
|
10775
|
+
]
|
|
10776
|
+
},
|
|
10777
|
+
{
|
|
10778
|
+
kind: "step",
|
|
10779
|
+
fallback: { kind: "compare", field: "ramp", operator: "ne", value: 1 },
|
|
10780
|
+
stops: [{ zoom: 12, selector: { kind: "literal", value: true } }]
|
|
10781
|
+
}
|
|
10782
|
+
]
|
|
10783
|
+
},
|
|
10784
|
+
style: {},
|
|
10785
|
+
target: `roads.classes.${roadClass}.surface.fill`
|
|
10786
|
+
})
|
|
10787
|
+
])
|
|
10788
|
+
);
|
|
10789
|
+
}
|
|
9942
10790
|
function streetsRoadRenderStack() {
|
|
9943
10791
|
return {
|
|
9944
|
-
...
|
|
10792
|
+
...parkPathRefinements(),
|
|
10793
|
+
...streetsRoadEligibility(),
|
|
9945
10794
|
oneWayMarkers: refineRenderTarget3({
|
|
9946
10795
|
renderer: "symbol",
|
|
9947
10796
|
style: {
|
|
@@ -9950,27 +10799,27 @@ function streetsRoadRenderStack() {
|
|
|
9950
10799
|
ignorePlacement: true,
|
|
9951
10800
|
image: streetsVisual.image.oneway,
|
|
9952
10801
|
keepUpright: false,
|
|
9953
|
-
opacity:
|
|
9954
|
-
[
|
|
9955
|
-
[
|
|
9956
|
-
[
|
|
10802
|
+
opacity: expr11.interpolate({ kind: "linear" }, expr11.zoom(), [
|
|
10803
|
+
[16.5, 0],
|
|
10804
|
+
[17, 0.92],
|
|
10805
|
+
[17.5, 1]
|
|
9957
10806
|
]),
|
|
9958
10807
|
padding: 0,
|
|
9959
10808
|
pitchAlignment: "map",
|
|
9960
|
-
rotate:
|
|
9961
|
-
[{ when:
|
|
10809
|
+
rotate: expr11.case(
|
|
10810
|
+
[{ when: expr11.eq(expr11.get(field10("oneway")), -1), value: 180 }],
|
|
9962
10811
|
0
|
|
9963
10812
|
),
|
|
9964
10813
|
rotationAlignment: "map",
|
|
9965
|
-
size:
|
|
10814
|
+
size: expr11.interpolate({ kind: "linear" }, expr11.zoom(), [
|
|
9966
10815
|
[15, 0.38],
|
|
9967
10816
|
[17, 0.55],
|
|
9968
10817
|
[19, 0.7],
|
|
9969
10818
|
[22, 1]
|
|
9970
10819
|
])
|
|
9971
10820
|
},
|
|
9972
|
-
minZoom:
|
|
9973
|
-
spacing:
|
|
10821
|
+
minZoom: 16.5,
|
|
10822
|
+
spacing: expr11.interpolate({ kind: "linear" }, expr11.zoom(), [
|
|
9974
10823
|
[15, 95],
|
|
9975
10824
|
[17, 115],
|
|
9976
10825
|
[19, 150],
|
|
@@ -9978,8 +10827,8 @@ function streetsRoadRenderStack() {
|
|
|
9978
10827
|
]),
|
|
9979
10828
|
text: {
|
|
9980
10829
|
allowOverlap: true,
|
|
9981
|
-
field:
|
|
9982
|
-
[{ when:
|
|
10830
|
+
field: expr11.case(
|
|
10831
|
+
[{ when: expr11.eq(expr11.get(field10("oneway")), -1), value: "\u2190" }],
|
|
9983
10832
|
"\u2192"
|
|
9984
10833
|
),
|
|
9985
10834
|
ignorePlacement: true,
|
|
@@ -9988,7 +10837,7 @@ function streetsRoadRenderStack() {
|
|
|
9988
10837
|
padding: 0,
|
|
9989
10838
|
pitchAlignment: "map",
|
|
9990
10839
|
rotationAlignment: "map",
|
|
9991
|
-
size:
|
|
10840
|
+
size: expr11.interpolate({ kind: "linear" }, expr11.zoom(), [
|
|
9992
10841
|
[15, 11],
|
|
9993
10842
|
[17, 17],
|
|
9994
10843
|
[19, 20],
|
|
@@ -10025,6 +10874,7 @@ function cityRoadStyle(color, widths, options = {}) {
|
|
|
10025
10874
|
casingMinZoom = roadBorderZoom,
|
|
10026
10875
|
colorStops,
|
|
10027
10876
|
minZoom,
|
|
10877
|
+
major = false,
|
|
10028
10878
|
oneWayScale = 1,
|
|
10029
10879
|
rampWidths,
|
|
10030
10880
|
tunnelCasingColor = streetsDetailPalette.roadTunnelBorder,
|
|
@@ -10032,12 +10882,12 @@ function cityRoadStyle(color, widths, options = {}) {
|
|
|
10032
10882
|
tunnelVisible = true
|
|
10033
10883
|
} = options;
|
|
10034
10884
|
const zoomRange = minZoom === void 0 ? {} : { minZoom };
|
|
10035
|
-
const opacity =
|
|
10885
|
+
const opacity = zoom10.linear([
|
|
10036
10886
|
[3, 0],
|
|
10037
10887
|
[3.5, 1]
|
|
10038
10888
|
]);
|
|
10039
|
-
const surfaceColor = colorStops ?
|
|
10040
|
-
const resolvedCasingColor =
|
|
10889
|
+
const surfaceColor = colorStops ? zoom10.linear(colorStops) : color;
|
|
10890
|
+
const resolvedCasingColor = zoom10.linear(roadCasingColorStops(casingColorStops));
|
|
10041
10891
|
const fill = {
|
|
10042
10892
|
...zoomRange,
|
|
10043
10893
|
cap: roadLineCap,
|
|
@@ -10054,29 +10904,36 @@ function cityRoadStyle(color, widths, options = {}) {
|
|
|
10054
10904
|
cap: roadLineCap,
|
|
10055
10905
|
// Border reads as a subtle shade of the road itself rather than a white halo.
|
|
10056
10906
|
color: resolvedCasingColor,
|
|
10057
|
-
gapWidth:
|
|
10907
|
+
gapWidth: roadWidth(widths, oneWayScale, rampWidths),
|
|
10058
10908
|
join: roadLineJoin,
|
|
10059
10909
|
opacity,
|
|
10060
|
-
width:
|
|
10910
|
+
width: roadCasingWidth(major)
|
|
10061
10911
|
};
|
|
10062
10912
|
return {
|
|
10063
10913
|
surface: { casing, fill },
|
|
10064
|
-
bridge: {
|
|
10914
|
+
bridge: {
|
|
10915
|
+
casing: { ...casing, cap: "butt", join: "miter", width: roadCasingWidth((minZoom ?? 0) < 12) },
|
|
10916
|
+
fill: { ...fill, cap: "round", join: "miter", minZoom: Math.max(minZoom ?? 0, 13) }
|
|
10917
|
+
},
|
|
10065
10918
|
tunnel: tunnelVisible ? {
|
|
10066
10919
|
casing: {
|
|
10067
10920
|
...casing,
|
|
10068
|
-
cap:
|
|
10921
|
+
cap: "butt",
|
|
10922
|
+
join: "miter",
|
|
10923
|
+
minZoom: minZoom === 3 ? 13 : (minZoom ?? 0) < 12 ? 14 : minZoom === 12 ? 15 : 16,
|
|
10069
10924
|
color: tunnelCasingColor,
|
|
10070
10925
|
dash: tunnelBorderDash,
|
|
10071
10926
|
gapWidth: roadWidth(widths, oneWayScale, rampWidths),
|
|
10072
10927
|
opacity: 1,
|
|
10073
|
-
width:
|
|
10928
|
+
width: roadCasingWidth((minZoom ?? 0) < 12)
|
|
10074
10929
|
},
|
|
10075
10930
|
fill: {
|
|
10076
10931
|
...fill,
|
|
10077
|
-
cap:
|
|
10932
|
+
cap: "butt",
|
|
10933
|
+
join: "miter",
|
|
10934
|
+
minZoom: Math.max(minZoom ?? 0, 13),
|
|
10078
10935
|
color: tunnelColor,
|
|
10079
|
-
opacity:
|
|
10936
|
+
opacity: zoom10.linear([
|
|
10080
10937
|
[3, 0],
|
|
10081
10938
|
[3.5, 0.8]
|
|
10082
10939
|
])
|
|
@@ -10094,7 +10951,7 @@ function cityRoadStyle(color, widths, options = {}) {
|
|
|
10094
10951
|
}
|
|
10095
10952
|
function pathRoadStyle(color, widths, options = {}) {
|
|
10096
10953
|
const zoomRange = options.minZoom === void 0 ? {} : { minZoom: options.minZoom };
|
|
10097
|
-
const surfaceColor = options.colorStops ?
|
|
10954
|
+
const surfaceColor = options.colorStops ? zoom10.linear(options.colorStops) : color;
|
|
10098
10955
|
const cap = options.steps ? "butt" : pathLineCap;
|
|
10099
10956
|
const tunnelCap = "butt";
|
|
10100
10957
|
const join = options.steps ? "round" : pathLineJoin;
|
|
@@ -10143,12 +11000,43 @@ function pathRoadStyle(color, widths, options = {}) {
|
|
|
10143
11000
|
}
|
|
10144
11001
|
};
|
|
10145
11002
|
}
|
|
11003
|
+
function streetNamePass(kind, minZoom, classes, subclasses) {
|
|
11004
|
+
const style = roadLabelStyle(kind);
|
|
11005
|
+
return renderPass9({
|
|
11006
|
+
feature: "roadName",
|
|
11007
|
+
renderer: "symbol",
|
|
11008
|
+
requirements: ["roads"],
|
|
11009
|
+
placement: "below-buildings",
|
|
11010
|
+
selector: {
|
|
11011
|
+
kind: "all",
|
|
11012
|
+
selectors: [
|
|
11013
|
+
{ field: "name", kind: "has" },
|
|
11014
|
+
{ field: "class", kind: "in", values: classes },
|
|
11015
|
+
...subclasses ? [{ field: "subclass", kind: "in", values: subclasses }] : []
|
|
11016
|
+
]
|
|
11017
|
+
},
|
|
11018
|
+
style: {
|
|
11019
|
+
...style,
|
|
11020
|
+
minZoom,
|
|
11021
|
+
text: {
|
|
11022
|
+
...style.text,
|
|
11023
|
+
field: expr11.coalesce(
|
|
11024
|
+
expr11.get(field10("name")),
|
|
11025
|
+
expr11.get(field10("nameLatin")),
|
|
11026
|
+
expr11.get(field10("nameEnglish"))
|
|
11027
|
+
),
|
|
11028
|
+
optional: true
|
|
11029
|
+
}
|
|
11030
|
+
}
|
|
11031
|
+
});
|
|
11032
|
+
}
|
|
10146
11033
|
function roadLabelStyle(kind) {
|
|
10147
11034
|
const major = kind === "major";
|
|
10148
11035
|
const pedestrian = kind === "pedestrian";
|
|
10149
11036
|
const path = kind === "path";
|
|
10150
|
-
const
|
|
10151
|
-
const
|
|
11037
|
+
const small = path || kind === "service";
|
|
11038
|
+
const startSize = major ? 9 : pedestrian ? 9 : small ? 6.5 : 8;
|
|
11039
|
+
const endSize = major ? 16 : pedestrian ? 14 : small ? 13 : 14;
|
|
10152
11040
|
return {
|
|
10153
11041
|
placement: "line",
|
|
10154
11042
|
priority: major ? 90 : 50,
|
|
@@ -10156,12 +11044,14 @@ function roadLabelStyle(kind) {
|
|
|
10156
11044
|
text: {
|
|
10157
11045
|
color: streetsVisual.label.road,
|
|
10158
11046
|
font: streetsVisual.font.default,
|
|
10159
|
-
haloColor:
|
|
11047
|
+
haloColor: streetsVisual.label.roadHalo,
|
|
10160
11048
|
haloWidth: 1,
|
|
10161
11049
|
letterSpacing: path || pedestrian ? 0.01 : 0.15,
|
|
10162
11050
|
maxAngle: 30,
|
|
10163
11051
|
padding: 1,
|
|
10164
|
-
|
|
11052
|
+
pitchAlignment: "map",
|
|
11053
|
+
rotationAlignment: "map",
|
|
11054
|
+
size: zoom10.linear([
|
|
10165
11055
|
[10, startSize],
|
|
10166
11056
|
[18, endSize]
|
|
10167
11057
|
]),
|
|
@@ -10177,9 +11067,19 @@ var streets = bindOfficialMapTheme(
|
|
|
10177
11067
|
glyphs: {
|
|
10178
11068
|
kind: "url",
|
|
10179
11069
|
url: "https://api.tileflow.dev/base/33d4de5e8086d9d629d67d3f39fedb87e23686c4c1ac653c27e2a52aee9d00b3/glyphs/{fontstack}/{range}.pbf",
|
|
10180
|
-
fontStacks: ["Noto Sans Regular", "Noto Sans Bold"]
|
|
11070
|
+
fontStacks: ["Noto Sans Regular", "Noto Sans Bold", "Noto Sans Italic"]
|
|
10181
11071
|
},
|
|
10182
11072
|
themes: streetsThemes,
|
|
11073
|
+
timeOfDay: {
|
|
11074
|
+
light: { day: "light", dawn: "dawn", dusk: "dusk", night: "dark" },
|
|
11075
|
+
faded: { day: "faded", dawn: "dawn-faded", dusk: "dusk-faded", night: "dark-faded" },
|
|
11076
|
+
monochrome: {
|
|
11077
|
+
day: "monochrome",
|
|
11078
|
+
dawn: "dawn-monochrome",
|
|
11079
|
+
dusk: "dusk-monochrome",
|
|
11080
|
+
night: "dark-monochrome"
|
|
11081
|
+
}
|
|
11082
|
+
},
|
|
10183
11083
|
defaultTheme: "light",
|
|
10184
11084
|
systemThemes: { light: "light", dark: "dark" },
|
|
10185
11085
|
projection: "globe",
|
|
@@ -10190,25 +11090,57 @@ var streets = bindOfficialMapTheme(
|
|
|
10190
11090
|
type: "tileflow-world"
|
|
10191
11091
|
},
|
|
10192
11092
|
icons: [streetsIcons],
|
|
10193
|
-
|
|
10194
|
-
//
|
|
10195
|
-
|
|
11093
|
+
models: [streetsModels],
|
|
11094
|
+
// The same open DEM used by the other terrain maps. Restrict relief to
|
|
11095
|
+
// regional zooms so street detail does not fetch high-resolution DEM tiles.
|
|
11096
|
+
terrain: {
|
|
11097
|
+
mode: "hillshade",
|
|
11098
|
+
encoding: "terrarium",
|
|
11099
|
+
url: "https://tiles.mapterhorn.com/tilejson.json",
|
|
11100
|
+
attribution: 'Terrain: <a href="https://mapterhorn.com/attribution">\xA9 Mapterhorn</a>',
|
|
11101
|
+
hillshade: {
|
|
11102
|
+
minZoom: 5,
|
|
11103
|
+
maxZoom: 14,
|
|
11104
|
+
accentColor: streetsVisual.terrain.accent,
|
|
11105
|
+
highlightColor: streetsVisual.terrain.highlight,
|
|
11106
|
+
shadowColor: streetsVisual.terrain.shadow,
|
|
11107
|
+
exaggeration: 0.23,
|
|
11108
|
+
illuminationAnchor: "map",
|
|
11109
|
+
illuminationDirection: 315
|
|
11110
|
+
}
|
|
11111
|
+
},
|
|
10196
11112
|
modules: {
|
|
10197
11113
|
// Optional keys: addresses, aeroways, boundaries, buildings, labels, land,
|
|
10198
11114
|
// landforms, poi, roads, transit, vegetation, water. Object order never
|
|
10199
11115
|
// controls layer order.
|
|
10200
11116
|
// Streets deliberately omits parcel-level house numbers. POI and road/place
|
|
10201
11117
|
// labels carry the useful navigation hierarchy without close-zoom numeric noise.
|
|
10202
|
-
addresses:
|
|
10203
|
-
|
|
11118
|
+
addresses: addresses4({
|
|
11119
|
+
labels: {
|
|
11120
|
+
minZoom: 17,
|
|
11121
|
+
text: {
|
|
11122
|
+
font: streetsVisual.font.default,
|
|
11123
|
+
color: streetsVisual.label.muted,
|
|
11124
|
+
haloColor: streetsVisual.label.placeHalo,
|
|
11125
|
+
haloWidth: 1,
|
|
11126
|
+
maxWidth: 10,
|
|
11127
|
+
padding: 20,
|
|
11128
|
+
size: zoom10.linear([
|
|
11129
|
+
[18, 11],
|
|
11130
|
+
[20, 13]
|
|
11131
|
+
])
|
|
11132
|
+
}
|
|
11133
|
+
}
|
|
11134
|
+
}),
|
|
11135
|
+
land: withRenderStack9(
|
|
10204
11136
|
land8({
|
|
10205
11137
|
background: {
|
|
10206
11138
|
color: streetsSurfacePalette.background,
|
|
10207
11139
|
opacity: 1
|
|
10208
11140
|
},
|
|
10209
11141
|
globalLandcover: {
|
|
10210
|
-
color:
|
|
10211
|
-
|
|
11142
|
+
color: expr11.match(
|
|
11143
|
+
expr11.get(field10("class")),
|
|
10212
11144
|
[
|
|
10213
11145
|
{ labels: "barren", value: streetsGlobalLandcoverPalette.barren },
|
|
10214
11146
|
{ labels: "crop", value: streetsGlobalLandcoverPalette.crop },
|
|
@@ -10344,7 +11276,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10344
11276
|
industrial: { fill: { color: streetsSurfacePalette.industrial, opacity: 1 } },
|
|
10345
11277
|
medical: { fill: { color: streetsSurfacePalette.medical, opacity: 1 } },
|
|
10346
11278
|
parking: {
|
|
10347
|
-
fill: { color: streetsSurfacePalette.parking, minZoom: 15, opacity:
|
|
11279
|
+
fill: { color: streetsSurfacePalette.parking, minZoom: 15, opacity: 1 },
|
|
10348
11280
|
outline: {
|
|
10349
11281
|
color: streetsSurfacePalette.parkingOutline,
|
|
10350
11282
|
minZoom: 16,
|
|
@@ -10374,9 +11306,9 @@ var streets = bindOfficialMapTheme(
|
|
|
10374
11306
|
water: water8({
|
|
10375
11307
|
bathymetry: {
|
|
10376
11308
|
antialias: false,
|
|
10377
|
-
color:
|
|
11309
|
+
color: expr11.interpolate(
|
|
10378
11310
|
{ kind: "linear" },
|
|
10379
|
-
|
|
11311
|
+
expr11.multiply(-1, expr11.toNumber(expr11.get(field10("bathymetryMinDepth")), 0)),
|
|
10380
11312
|
[
|
|
10381
11313
|
[0, streetsSurfacePalette.waterDepth0],
|
|
10382
11314
|
[200, streetsSurfacePalette.waterDepth200],
|
|
@@ -10386,7 +11318,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10386
11318
|
),
|
|
10387
11319
|
maxZoom: 8,
|
|
10388
11320
|
minZoom: 0,
|
|
10389
|
-
opacity:
|
|
11321
|
+
opacity: zoom10.linear([
|
|
10390
11322
|
[0, 1],
|
|
10391
11323
|
[6, 1],
|
|
10392
11324
|
[8, 0]
|
|
@@ -10394,8 +11326,8 @@ var streets = bindOfficialMapTheme(
|
|
|
10394
11326
|
},
|
|
10395
11327
|
bodies: {
|
|
10396
11328
|
fill: {
|
|
10397
|
-
color:
|
|
10398
|
-
|
|
11329
|
+
color: expr11.match(
|
|
11330
|
+
expr11.get(field10("class")),
|
|
10399
11331
|
[{ labels: ["ocean", "sea"], value: streetsSurfacePalette.waterOcean }],
|
|
10400
11332
|
streetsSurfacePalette.water
|
|
10401
11333
|
),
|
|
@@ -10420,7 +11352,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10420
11352
|
join: "round",
|
|
10421
11353
|
minZoom: 8,
|
|
10422
11354
|
opacity: 0.96,
|
|
10423
|
-
width:
|
|
11355
|
+
width: zoom10.linear([
|
|
10424
11356
|
[8, 0.35],
|
|
10425
11357
|
[13, 1.05],
|
|
10426
11358
|
[16, 2.2]
|
|
@@ -10432,7 +11364,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10432
11364
|
join: "round",
|
|
10433
11365
|
minZoom: 12,
|
|
10434
11366
|
opacity: 0.92,
|
|
10435
|
-
width:
|
|
11367
|
+
width: zoom10.linear([
|
|
10436
11368
|
[12, 0.35],
|
|
10437
11369
|
[14, 0.8],
|
|
10438
11370
|
[16, 1.4]
|
|
@@ -10444,7 +11376,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10444
11376
|
join: "round",
|
|
10445
11377
|
minZoom: 6,
|
|
10446
11378
|
opacity: 0.96,
|
|
10447
|
-
width:
|
|
11379
|
+
width: zoom10.linear([
|
|
10448
11380
|
[6, 0.45],
|
|
10449
11381
|
[13, 1.25],
|
|
10450
11382
|
[16, 3.2]
|
|
@@ -10456,7 +11388,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10456
11388
|
join: "round",
|
|
10457
11389
|
minZoom: 10,
|
|
10458
11390
|
opacity: 0.94,
|
|
10459
|
-
width:
|
|
11391
|
+
width: zoom10.linear([
|
|
10460
11392
|
[10, 0.3],
|
|
10461
11393
|
[12, 0.55],
|
|
10462
11394
|
[13, 0.9],
|
|
@@ -10466,31 +11398,8 @@ var streets = bindOfficialMapTheme(
|
|
|
10466
11398
|
}
|
|
10467
11399
|
}
|
|
10468
11400
|
}),
|
|
10469
|
-
vegetation:
|
|
10470
|
-
|
|
10471
|
-
color: streetsDetailPalette.greenspaceDark,
|
|
10472
|
-
minZoom: 16,
|
|
10473
|
-
opacity: 0.82,
|
|
10474
|
-
pitchAlignment: "map",
|
|
10475
|
-
pitchScale: "map",
|
|
10476
|
-
radius: zoom9.linear([
|
|
10477
|
-
[16, 2.2],
|
|
10478
|
-
[20, 8]
|
|
10479
|
-
]),
|
|
10480
|
-
strokeColor: streetsDetailPalette.greenspace,
|
|
10481
|
-
strokeOpacity: 0.55,
|
|
10482
|
-
strokeWidth: 0.8
|
|
10483
|
-
},
|
|
10484
|
-
mode: "3d",
|
|
10485
|
-
threeDimensional: {
|
|
10486
|
-
barkColor: streetsVisual.tree.bark,
|
|
10487
|
-
broadleafColors: streetsVisual.tree.broadleaf,
|
|
10488
|
-
coniferColors: streetsVisual.tree.conifer,
|
|
10489
|
-
crownScale: 1,
|
|
10490
|
-
heightScale: 1
|
|
10491
|
-
}
|
|
10492
|
-
}),
|
|
10493
|
-
boundaries: withRenderStack8(
|
|
11401
|
+
vegetation: streetsTrees,
|
|
11402
|
+
boundaries: withRenderStack9(
|
|
10494
11403
|
boundaries8({
|
|
10495
11404
|
// Mapbox Standard's admin-0/admin-1 layers map to OpenMapTiles
|
|
10496
11405
|
// admin_level 2/4 respectively.
|
|
@@ -10499,7 +11408,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10499
11408
|
dash: [10, 0],
|
|
10500
11409
|
minZoom: 1,
|
|
10501
11410
|
opacity: 1,
|
|
10502
|
-
width:
|
|
11411
|
+
width: zoom10.linear([
|
|
10503
11412
|
[3, 0.8],
|
|
10504
11413
|
[6, 1.35],
|
|
10505
11414
|
[12, 2.1]
|
|
@@ -10509,11 +11418,11 @@ var streets = bindOfficialMapTheme(
|
|
|
10509
11418
|
color: streetsOverviewPalette.admin1,
|
|
10510
11419
|
dash: [3, 2],
|
|
10511
11420
|
minZoom: 2,
|
|
10512
|
-
opacity:
|
|
11421
|
+
opacity: zoom10.linear([
|
|
10513
11422
|
[2, 0],
|
|
10514
11423
|
[3, 1]
|
|
10515
11424
|
]),
|
|
10516
|
-
width:
|
|
11425
|
+
width: zoom10.linear([
|
|
10517
11426
|
[3, 0.7],
|
|
10518
11427
|
[6, 1.2],
|
|
10519
11428
|
[12, 1.8]
|
|
@@ -10521,12 +11430,12 @@ var streets = bindOfficialMapTheme(
|
|
|
10521
11430
|
},
|
|
10522
11431
|
disputed: {
|
|
10523
11432
|
color: streetsOverviewPalette.admin0,
|
|
10524
|
-
dash:
|
|
10525
|
-
[7,
|
|
11433
|
+
dash: expr11.step(expr11.zoom(), expr11.literal([3, 2, 5]), [
|
|
11434
|
+
[7, expr11.literal([2, 1.5])]
|
|
10526
11435
|
]),
|
|
10527
11436
|
minZoom: 1,
|
|
10528
11437
|
opacity: 1,
|
|
10529
|
-
width:
|
|
11438
|
+
width: zoom10.linear([
|
|
10530
11439
|
[3, 0.5],
|
|
10531
11440
|
[12, 2]
|
|
10532
11441
|
])
|
|
@@ -10535,7 +11444,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10535
11444
|
}),
|
|
10536
11445
|
streetsBoundaryRenderStack()
|
|
10537
11446
|
),
|
|
10538
|
-
roads:
|
|
11447
|
+
roads: withRenderStack9(
|
|
10539
11448
|
roads7({
|
|
10540
11449
|
detail: "all",
|
|
10541
11450
|
// 'none' | 'highways' | 'major' | 'streets' | 'all'.
|
|
@@ -10553,10 +11462,12 @@ var streets = bindOfficialMapTheme(
|
|
|
10553
11462
|
},
|
|
10554
11463
|
crossings: {
|
|
10555
11464
|
image: streetsVisual.image.crosswalk,
|
|
10556
|
-
|
|
10557
|
-
|
|
10558
|
-
|
|
10559
|
-
|
|
11465
|
+
// At city detail these white markings wash out otherwise matching
|
|
11466
|
+
// road fills. Introduce them with the closer street-level detail.
|
|
11467
|
+
minZoom: 16.5,
|
|
11468
|
+
opacity: zoom10.linear([
|
|
11469
|
+
[16.5, 0],
|
|
11470
|
+
[17, 1]
|
|
10560
11471
|
])
|
|
10561
11472
|
},
|
|
10562
11473
|
roundabouts: {
|
|
@@ -10586,9 +11497,12 @@ var streets = bindOfficialMapTheme(
|
|
|
10586
11497
|
pattern: streetsVisual.image.sidewalkPattern
|
|
10587
11498
|
},
|
|
10588
11499
|
surface: {
|
|
10589
|
-
|
|
11500
|
+
// Preserve the ground beneath mapped pedestrian polygons. A
|
|
11501
|
+
// neutral translucent tint darkens grass as green and pavement
|
|
11502
|
+
// as neutral, without requiring a spatial join in the style.
|
|
11503
|
+
color: streetsVisual.road.sidewalkSurface,
|
|
10590
11504
|
minZoom: 17,
|
|
10591
|
-
opacity:
|
|
11505
|
+
opacity: 1
|
|
10592
11506
|
}
|
|
10593
11507
|
},
|
|
10594
11508
|
modifiers: {
|
|
@@ -10597,11 +11511,10 @@ var streets = bindOfficialMapTheme(
|
|
|
10597
11511
|
// phases accept color, opacity, dash, blur, gapWidth, offset, and width.
|
|
10598
11512
|
construction: {
|
|
10599
11513
|
surface: {
|
|
10600
|
-
casing
|
|
10601
|
-
|
|
10602
|
-
|
|
10603
|
-
|
|
10604
|
-
},
|
|
11514
|
+
// Keep construction dashes in the fill. A conditional casing
|
|
11515
|
+
// dash adds a [1, 0] fallback to every ordinary road, selecting
|
|
11516
|
+
// MapLibre's SDF dash shader and stippling thin hollow borders.
|
|
11517
|
+
casing: { dash: [1, 0], opacity: 0 },
|
|
10605
11518
|
fill: {
|
|
10606
11519
|
color: mapboxRoadPalette.road,
|
|
10607
11520
|
dash: [1.5, 1],
|
|
@@ -10722,6 +11635,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10722
11635
|
[22, mapboxRoadPalette.motorway]
|
|
10723
11636
|
],
|
|
10724
11637
|
minZoom: 3,
|
|
11638
|
+
major: true,
|
|
10725
11639
|
rampWidths: mapboxMajorRampWidthStops,
|
|
10726
11640
|
tunnelCasingColor: mapboxRoadPalette.motorwayCasing,
|
|
10727
11641
|
tunnelColor: mapboxRoadPalette.motorwayTunnel
|
|
@@ -10745,6 +11659,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10745
11659
|
[22, mapboxRoadPalette.trunk]
|
|
10746
11660
|
],
|
|
10747
11661
|
minZoom: 3,
|
|
11662
|
+
major: true,
|
|
10748
11663
|
rampWidths: mapboxMajorRampWidthStops,
|
|
10749
11664
|
tunnelCasingColor: mapboxRoadPalette.trunkCasing,
|
|
10750
11665
|
tunnelColor: mapboxRoadPalette.trunkTunnel
|
|
@@ -10754,7 +11669,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10754
11669
|
primaryRoadSurfaceColor,
|
|
10755
11670
|
[
|
|
10756
11671
|
[3, 0.8],
|
|
10757
|
-
[12,
|
|
11672
|
+
[12, 3],
|
|
10758
11673
|
[18, 28],
|
|
10759
11674
|
[22, 280]
|
|
10760
11675
|
],
|
|
@@ -10765,7 +11680,8 @@ var streets = bindOfficialMapTheme(
|
|
|
10765
11680
|
streetsCityRoadPalette.primary,
|
|
10766
11681
|
primaryRoadSurfaceColor
|
|
10767
11682
|
),
|
|
10768
|
-
minZoom:
|
|
11683
|
+
minZoom: 6,
|
|
11684
|
+
major: true,
|
|
10769
11685
|
rampWidths: mapboxArterialRampWidthStops,
|
|
10770
11686
|
tunnelCasingColor: mapboxRoadPalette.roadCasing,
|
|
10771
11687
|
tunnelColor: mapboxRoadPalette.roadTunnel
|
|
@@ -10775,7 +11691,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10775
11691
|
secondaryRoadSurfaceColor,
|
|
10776
11692
|
[
|
|
10777
11693
|
[3, 0],
|
|
10778
|
-
[12,
|
|
11694
|
+
[12, 2.2],
|
|
10779
11695
|
[18, 26],
|
|
10780
11696
|
[22, 260]
|
|
10781
11697
|
],
|
|
@@ -10796,7 +11712,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10796
11712
|
tertiaryRoadSurfaceColor,
|
|
10797
11713
|
[
|
|
10798
11714
|
[3, 0],
|
|
10799
|
-
[12,
|
|
11715
|
+
[12, 2.2],
|
|
10800
11716
|
[18, 26],
|
|
10801
11717
|
[22, 260]
|
|
10802
11718
|
],
|
|
@@ -10817,13 +11733,12 @@ var streets = bindOfficialMapTheme(
|
|
|
10817
11733
|
roadSurfaceColor,
|
|
10818
11734
|
[
|
|
10819
11735
|
[3, 0],
|
|
10820
|
-
[12, 0.
|
|
11736
|
+
[12, 0.5],
|
|
10821
11737
|
[18, 20],
|
|
10822
11738
|
[22, 200]
|
|
10823
11739
|
],
|
|
10824
11740
|
{
|
|
10825
11741
|
casingColorStops: cityRoadCasingColorStops(12),
|
|
10826
|
-
casingMinZoom: 14.5,
|
|
10827
11742
|
colorStops: cityRoadColorStops(12, streetsCityRoadPalette.minor, roadSurfaceColor),
|
|
10828
11743
|
minZoom: 12,
|
|
10829
11744
|
tunnelCasingColor: mapboxRoadPalette.roadCasing,
|
|
@@ -10834,16 +11749,12 @@ var streets = bindOfficialMapTheme(
|
|
|
10834
11749
|
roadSurfaceColor,
|
|
10835
11750
|
[
|
|
10836
11751
|
[3, 0],
|
|
10837
|
-
[
|
|
10838
|
-
[13.5, 0.35],
|
|
10839
|
-
[14, 0.8],
|
|
10840
|
-
[15, 2.2],
|
|
10841
|
-
[16, 3.8],
|
|
11752
|
+
[12, 0],
|
|
10842
11753
|
[18, 10],
|
|
10843
11754
|
[22, 100]
|
|
10844
11755
|
],
|
|
10845
11756
|
{
|
|
10846
|
-
casingMinZoom:
|
|
11757
|
+
casingMinZoom: 16,
|
|
10847
11758
|
casingColorStops: [
|
|
10848
11759
|
[14.5, mapboxRoadPalette.roadCasing],
|
|
10849
11760
|
[22, mapboxRoadPalette.roadCasing]
|
|
@@ -10852,24 +11763,21 @@ var streets = bindOfficialMapTheme(
|
|
|
10852
11763
|
[13.5, roadSurfaceColor],
|
|
10853
11764
|
[22, roadSurfaceColor]
|
|
10854
11765
|
],
|
|
10855
|
-
minZoom:
|
|
10856
|
-
|
|
11766
|
+
minZoom: 15,
|
|
11767
|
+
tunnelCasingColor: mapboxRoadPalette.roadCasing,
|
|
11768
|
+
tunnelColor: mapboxRoadPalette.roadTunnel
|
|
10857
11769
|
}
|
|
10858
11770
|
),
|
|
10859
11771
|
track: cityRoadStyle(
|
|
10860
11772
|
mapboxRoadPalette.road,
|
|
10861
11773
|
[
|
|
10862
11774
|
[3, 0],
|
|
10863
|
-
[
|
|
10864
|
-
[13.5, 0.25],
|
|
10865
|
-
[14, 0.6],
|
|
10866
|
-
[15, 1.8],
|
|
10867
|
-
[16, 3.2],
|
|
11775
|
+
[12, 0],
|
|
10868
11776
|
[18, 10],
|
|
10869
11777
|
[22, 100]
|
|
10870
11778
|
],
|
|
10871
11779
|
{
|
|
10872
|
-
casingMinZoom:
|
|
11780
|
+
casingMinZoom: 16,
|
|
10873
11781
|
casingColorStops: [
|
|
10874
11782
|
[14.5, mapboxRoadPalette.roadCasing],
|
|
10875
11783
|
[22, mapboxRoadPalette.roadCasing]
|
|
@@ -10878,32 +11786,28 @@ var streets = bindOfficialMapTheme(
|
|
|
10878
11786
|
[13.5, mapboxRoadPalette.road],
|
|
10879
11787
|
[22, mapboxRoadPalette.road]
|
|
10880
11788
|
],
|
|
10881
|
-
minZoom:
|
|
11789
|
+
minZoom: 15,
|
|
10882
11790
|
tunnelCasingColor: mapboxRoadPalette.roadCasing,
|
|
10883
11791
|
tunnelColor: mapboxRoadPalette.roadTunnel
|
|
10884
11792
|
}
|
|
10885
11793
|
),
|
|
10886
|
-
pathway: pathRoadStyle(
|
|
10887
|
-
casingColor: streetsDetailPalette.parkPath,
|
|
10888
|
-
casingWidth: 0,
|
|
11794
|
+
pathway: pathRoadStyle(mapboxRoadPalette.pathFromZ16, mapboxPathWidthStops, {
|
|
10889
11795
|
minZoom: 12
|
|
10890
11796
|
}),
|
|
10891
|
-
footway: pathRoadStyle(
|
|
10892
|
-
casingColor: streetsDetailPalette.parkPath,
|
|
10893
|
-
casingWidth: 0,
|
|
11797
|
+
footway: pathRoadStyle(mapboxRoadPalette.pathFromZ16, mapboxPathWidthStops, {
|
|
10894
11798
|
minZoom: 12
|
|
10895
11799
|
}),
|
|
10896
11800
|
cycleway: pathRoadStyle(mapboxRoadPalette.cycleway, mapboxPathWidthStops, {
|
|
10897
11801
|
casingColor: mapboxRoadPalette.pathCasing,
|
|
10898
11802
|
casingGapWidth: roadWidth(mapboxPathWidthStops, 1),
|
|
10899
|
-
fillOpacity:
|
|
11803
|
+
fillOpacity: zoom10.linear([
|
|
10900
11804
|
[15, 0],
|
|
10901
11805
|
[16, 1]
|
|
10902
11806
|
]),
|
|
10903
11807
|
minZoom: 15,
|
|
10904
11808
|
underlay: {
|
|
10905
11809
|
cap: pathLineCap,
|
|
10906
|
-
color:
|
|
11810
|
+
color: zoom10.linear([
|
|
10907
11811
|
[15, mapboxRoadPalette.pathAtZ15],
|
|
10908
11812
|
[16, mapboxRoadPalette.pathFromZ16]
|
|
10909
11813
|
]),
|
|
@@ -10912,16 +11816,16 @@ var streets = bindOfficialMapTheme(
|
|
|
10912
11816
|
opacity: 1,
|
|
10913
11817
|
width: roadWidth(mapboxPathWidthStops, 1)
|
|
10914
11818
|
},
|
|
10915
|
-
width:
|
|
11819
|
+
width: zoom10.linear([
|
|
10916
11820
|
[12, 0],
|
|
10917
11821
|
[18, 2],
|
|
10918
11822
|
[22, 20]
|
|
10919
11823
|
])
|
|
10920
11824
|
}),
|
|
10921
|
-
steps: pathRoadStyle(
|
|
11825
|
+
steps: pathRoadStyle(mapboxRoadPalette.pathFromZ16, mapboxPathWidthStops, {
|
|
10922
11826
|
casingMinZoom: 14,
|
|
10923
|
-
|
|
10924
|
-
|
|
11827
|
+
casingWidth: contextualPathLineWidth,
|
|
11828
|
+
casingGapWidth: 0,
|
|
10925
11829
|
// World V1 overzooms its native z15 tile above street level.
|
|
10926
11830
|
// Keep this literal: a zoom-dependent dash is evaluated at the
|
|
10927
11831
|
// source tile zoom and would remain a continuous line at z16+.
|
|
@@ -10931,18 +11835,35 @@ var streets = bindOfficialMapTheme(
|
|
|
10931
11835
|
minZoom: 14,
|
|
10932
11836
|
steps: true
|
|
10933
11837
|
}),
|
|
10934
|
-
pedestrian: pathRoadStyle(
|
|
11838
|
+
pedestrian: pathRoadStyle(mapboxRoadPalette.pathFromZ16, mapboxPathWidthStops, {
|
|
10935
11839
|
casingMinZoom: 14,
|
|
10936
|
-
casingColor: streetsDetailPalette.parkPath,
|
|
10937
|
-
casingWidth: 0,
|
|
10938
11840
|
minZoom: 12
|
|
10939
11841
|
})
|
|
10940
11842
|
}
|
|
10941
11843
|
}),
|
|
10942
11844
|
streetsRoadRenderStack()
|
|
10943
11845
|
),
|
|
10944
|
-
transit: transit8(
|
|
10945
|
-
|
|
11846
|
+
transit: transit8({
|
|
11847
|
+
...mapboxRailTransitStyle(mapboxRailColor),
|
|
11848
|
+
// Fine blue routes fade in at regional scale; street-scale dashes
|
|
11849
|
+
// and names follow the same hierarchy as the Standard reference.
|
|
11850
|
+
ferry: {
|
|
11851
|
+
color: streetsVisual.road.ferry,
|
|
11852
|
+
minZoom: 8,
|
|
11853
|
+
dash: expr11.step(expr11.zoom(), expr11.literal([1, 0]), [
|
|
11854
|
+
[13, expr11.literal([12, 4])]
|
|
11855
|
+
]),
|
|
11856
|
+
opacity: zoom10.linear([
|
|
11857
|
+
[8, 0],
|
|
11858
|
+
[17, 1]
|
|
11859
|
+
]),
|
|
11860
|
+
width: zoom10.exponential(1.5, [
|
|
11861
|
+
[14, 0.5],
|
|
11862
|
+
[20, 1]
|
|
11863
|
+
])
|
|
11864
|
+
}
|
|
11865
|
+
}),
|
|
11866
|
+
buildings: withRenderStack9(
|
|
10946
11867
|
buildings7({
|
|
10947
11868
|
mode: "flat",
|
|
10948
11869
|
// 'flat' | '3d'.
|
|
@@ -10957,7 +11878,7 @@ var streets = bindOfficialMapTheme(
|
|
|
10957
11878
|
fill: {
|
|
10958
11879
|
color: buildingFillColor,
|
|
10959
11880
|
minZoom: 14.25,
|
|
10960
|
-
opacity:
|
|
11881
|
+
opacity: zoom10.linear([
|
|
10961
11882
|
[14.25, 0],
|
|
10962
11883
|
[14.75, 0.5],
|
|
10963
11884
|
[15, 1]
|
|
@@ -10966,14 +11887,14 @@ var streets = bindOfficialMapTheme(
|
|
|
10966
11887
|
outline: {
|
|
10967
11888
|
color: buildingOutlineColor,
|
|
10968
11889
|
minZoom: 14.5,
|
|
10969
|
-
opacity:
|
|
11890
|
+
opacity: zoom10.linear([
|
|
10970
11891
|
[14.5, 0],
|
|
10971
11892
|
[15, 0.6],
|
|
10972
11893
|
[16, 0.82],
|
|
10973
11894
|
[17, 0.96],
|
|
10974
11895
|
[18, 1]
|
|
10975
11896
|
]),
|
|
10976
|
-
width:
|
|
11897
|
+
width: zoom10.linear([
|
|
10977
11898
|
[14.5, 0.25],
|
|
10978
11899
|
[15, 0.4],
|
|
10979
11900
|
[16, 0.65],
|
|
@@ -10985,15 +11906,15 @@ var streets = bindOfficialMapTheme(
|
|
|
10985
11906
|
}),
|
|
10986
11907
|
streetsBuildingRenderStack()
|
|
10987
11908
|
),
|
|
10988
|
-
labels:
|
|
11909
|
+
labels: withRenderStack9(
|
|
10989
11910
|
labels8({
|
|
10990
11911
|
collisionPriority: "navigation",
|
|
10991
11912
|
language: "local",
|
|
10992
11913
|
// 'auto' | 'local' | 'en' | another language field suffix.
|
|
10993
11914
|
places: "all",
|
|
10994
11915
|
// 'none' | 'major' | 'all'.
|
|
10995
|
-
|
|
10996
|
-
|
|
11916
|
+
// Street names use the ground passes below; shields remain in the foreground.
|
|
11917
|
+
roads: "none",
|
|
10997
11918
|
shields: "major",
|
|
10998
11919
|
// 'none' | 'major' | 'all'.
|
|
10999
11920
|
junctions: true,
|
|
@@ -11002,7 +11923,7 @@ var streets = bindOfficialMapTheme(
|
|
|
11002
11923
|
// 'none' | 'major' | 'all'.
|
|
11003
11924
|
styles: {
|
|
11004
11925
|
places: {
|
|
11005
|
-
//
|
|
11926
|
+
// Standard overview hierarchy: continents disappear first, then
|
|
11006
11927
|
// countries and administrative regions hand over to settlements.
|
|
11007
11928
|
continent: {
|
|
11008
11929
|
minZoom: 0.75,
|
|
@@ -11010,17 +11931,17 @@ var streets = bindOfficialMapTheme(
|
|
|
11010
11931
|
priority: 100,
|
|
11011
11932
|
text: {
|
|
11012
11933
|
color: streetsOverviewPalette.label,
|
|
11013
|
-
haloColor:
|
|
11934
|
+
haloColor: streetsVisual.label.placeHalo,
|
|
11014
11935
|
haloWidth: 1.5,
|
|
11015
11936
|
letterSpacing: 0.05,
|
|
11016
11937
|
lineHeight: 1.1,
|
|
11017
11938
|
maxWidth: 6,
|
|
11018
|
-
opacity:
|
|
11939
|
+
opacity: zoom10.linear([
|
|
11019
11940
|
[0, 0.8],
|
|
11020
11941
|
[1.5, 0.5],
|
|
11021
11942
|
[2.5, 0.5]
|
|
11022
11943
|
]),
|
|
11023
|
-
size:
|
|
11944
|
+
size: zoom10.exponential(0.5, [
|
|
11024
11945
|
[0, 10],
|
|
11025
11946
|
[2.5, 15]
|
|
11026
11947
|
]),
|
|
@@ -11032,46 +11953,33 @@ var streets = bindOfficialMapTheme(
|
|
|
11032
11953
|
maxZoom: 10,
|
|
11033
11954
|
priority: 95,
|
|
11034
11955
|
text: {
|
|
11956
|
+
font: streetsVisual.font.default,
|
|
11035
11957
|
color: streetsOverviewPalette.label,
|
|
11036
|
-
haloColor:
|
|
11958
|
+
haloColor: streetsVisual.label.placeHalo,
|
|
11037
11959
|
haloWidth: 1.25,
|
|
11038
11960
|
lineHeight: 1.1,
|
|
11039
11961
|
maxWidth: 6,
|
|
11040
11962
|
padding: 3,
|
|
11041
|
-
radialOffset:
|
|
11963
|
+
radialOffset: zoom10.step([
|
|
11042
11964
|
[1, 0.6],
|
|
11043
11965
|
[8, 0]
|
|
11044
11966
|
]),
|
|
11045
|
-
size:
|
|
11967
|
+
size: expr11.interpolate(
|
|
11046
11968
|
{ kind: "cubic-bezier", x1: 0.2, x2: 0.7, y1: 0, y2: 1 },
|
|
11047
|
-
|
|
11969
|
+
expr11.zoom(),
|
|
11048
11970
|
[
|
|
11049
11971
|
[
|
|
11050
11972
|
1,
|
|
11051
|
-
|
|
11973
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 11, [
|
|
11052
11974
|
[4, 9],
|
|
11053
11975
|
[5, 8]
|
|
11054
11976
|
])
|
|
11055
11977
|
],
|
|
11056
|
-
[
|
|
11057
|
-
5,
|
|
11058
|
-
expr9.step(expr9.coalesce(expr9.get(field8("rank")), 99), 14, [
|
|
11059
|
-
[3, 13],
|
|
11060
|
-
[5, 11]
|
|
11061
|
-
])
|
|
11062
|
-
],
|
|
11063
|
-
[
|
|
11064
|
-
7,
|
|
11065
|
-
expr9.step(expr9.coalesce(expr9.get(field8("rank")), 99), 16, [
|
|
11066
|
-
[3, 15],
|
|
11067
|
-
[5, 13]
|
|
11068
|
-
])
|
|
11069
|
-
],
|
|
11070
11978
|
[
|
|
11071
11979
|
9,
|
|
11072
|
-
|
|
11073
|
-
[
|
|
11074
|
-
[5,
|
|
11980
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 22, [
|
|
11981
|
+
[4, 19],
|
|
11982
|
+
[5, 17]
|
|
11075
11983
|
])
|
|
11076
11984
|
]
|
|
11077
11985
|
]
|
|
@@ -11084,26 +11992,27 @@ var streets = bindOfficialMapTheme(
|
|
|
11084
11992
|
maxZoom: 9,
|
|
11085
11993
|
priority: 86,
|
|
11086
11994
|
text: {
|
|
11995
|
+
font: streetsVisual.font.places,
|
|
11087
11996
|
color: streetsOverviewPalette.label,
|
|
11088
|
-
haloColor:
|
|
11997
|
+
haloColor: streetsVisual.label.placeHalo,
|
|
11089
11998
|
haloWidth: 1,
|
|
11090
11999
|
letterSpacing: 0.15,
|
|
11091
12000
|
maxWidth: 6,
|
|
11092
12001
|
opacity: 0.5,
|
|
11093
|
-
size:
|
|
12002
|
+
size: expr11.interpolate(
|
|
11094
12003
|
{ kind: "cubic-bezier", x1: 0.85, x2: 0.65, y1: 0.7, y2: 1 },
|
|
11095
|
-
|
|
12004
|
+
expr11.zoom(),
|
|
11096
12005
|
[
|
|
11097
12006
|
[
|
|
11098
12007
|
4,
|
|
11099
|
-
|
|
12008
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 9, [
|
|
11100
12009
|
[6, 8],
|
|
11101
12010
|
[7, 7]
|
|
11102
12011
|
])
|
|
11103
12012
|
],
|
|
11104
12013
|
[
|
|
11105
12014
|
9,
|
|
11106
|
-
|
|
12015
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 21, [
|
|
11107
12016
|
[6, 16],
|
|
11108
12017
|
[7, 14]
|
|
11109
12018
|
])
|
|
@@ -11115,67 +12024,46 @@ var streets = bindOfficialMapTheme(
|
|
|
11115
12024
|
},
|
|
11116
12025
|
city: {
|
|
11117
12026
|
minZoom: 2,
|
|
11118
|
-
maxZoom:
|
|
11119
|
-
priority:
|
|
12027
|
+
maxZoom: 15,
|
|
12028
|
+
priority: expr11.subtract(100, expr11.coalesce(expr11.get(field10("rank")), 20)),
|
|
11120
12029
|
text: {
|
|
11121
|
-
color:
|
|
12030
|
+
color: zoom10.linear([
|
|
11122
12031
|
[2, streetsOverviewPalette.label],
|
|
11123
12032
|
[4, streetsOverviewPalette.label],
|
|
11124
12033
|
[6, streetsVisual.label.settlement]
|
|
11125
12034
|
]),
|
|
11126
|
-
haloColor:
|
|
12035
|
+
haloColor: streetsVisual.label.placeHalo,
|
|
11127
12036
|
haloBlur: 1,
|
|
11128
12037
|
haloWidth: 1,
|
|
11129
12038
|
lineHeight: 1.1,
|
|
11130
12039
|
maxWidth: 7,
|
|
11131
12040
|
padding: 1,
|
|
11132
|
-
radialOffset:
|
|
12041
|
+
radialOffset: zoom10.step([
|
|
11133
12042
|
[2, 0.6],
|
|
11134
12043
|
[8, 0]
|
|
11135
12044
|
]),
|
|
11136
|
-
size:
|
|
12045
|
+
size: expr11.interpolate(
|
|
11137
12046
|
{ kind: "cubic-bezier", x1: 0.2, x2: 0.9, y1: 0, y2: 1 },
|
|
11138
|
-
|
|
12047
|
+
expr11.zoom(),
|
|
11139
12048
|
[
|
|
11140
|
-
[
|
|
11141
|
-
3,
|
|
11142
|
-
expr9.step(expr9.coalesce(expr9.get(field8("rank")), 99), 13, [
|
|
11143
|
-
[3, 12],
|
|
11144
|
-
[6, 10]
|
|
11145
|
-
])
|
|
11146
|
-
],
|
|
11147
|
-
[
|
|
11148
|
-
5,
|
|
11149
|
-
expr9.step(expr9.coalesce(expr9.get(field8("rank")), 99), 15, [
|
|
11150
|
-
[3, 13],
|
|
11151
|
-
[4, 12],
|
|
11152
|
-
[6, 11],
|
|
11153
|
-
[8, 10],
|
|
11154
|
-
[14, 9.5]
|
|
11155
|
-
])
|
|
11156
|
-
],
|
|
12049
|
+
[3, expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 13, [[6, 11]])],
|
|
11157
12050
|
[
|
|
11158
12051
|
6,
|
|
11159
|
-
|
|
11160
|
-
[
|
|
11161
|
-
[
|
|
11162
|
-
[6, 12],
|
|
11163
|
-
[8, 10.5],
|
|
11164
|
-
[14, 10]
|
|
12052
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 18, [
|
|
12053
|
+
[6, 16],
|
|
12054
|
+
[7, 14]
|
|
11165
12055
|
])
|
|
11166
12056
|
],
|
|
11167
12057
|
[
|
|
11168
12058
|
8,
|
|
11169
|
-
|
|
11170
|
-
[
|
|
11171
|
-
[
|
|
11172
|
-
[9, 14],
|
|
11173
|
-
[12, 12]
|
|
12059
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 20, [
|
|
12060
|
+
[9, 16],
|
|
12061
|
+
[10, 14]
|
|
11174
12062
|
])
|
|
11175
12063
|
],
|
|
11176
12064
|
[
|
|
11177
12065
|
15,
|
|
11178
|
-
|
|
12066
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 24, [
|
|
11179
12067
|
[9, 20],
|
|
11180
12068
|
[12, 16],
|
|
11181
12069
|
[15, 14]
|
|
@@ -11183,54 +12071,41 @@ var streets = bindOfficialMapTheme(
|
|
|
11183
12071
|
]
|
|
11184
12072
|
]
|
|
11185
12073
|
),
|
|
11186
|
-
// Regular minor-city labels leave room for the denser
|
|
11187
|
-
// regional label field used by Standard. Capital dots and
|
|
11188
|
-
// rank-driven size still carry the major-city hierarchy.
|
|
11189
12074
|
font: streetsVisual.font.default,
|
|
11190
|
-
variableAnchors: [
|
|
11191
|
-
"left",
|
|
11192
|
-
"right",
|
|
11193
|
-
"top",
|
|
11194
|
-
"bottom",
|
|
11195
|
-
"top-left",
|
|
11196
|
-
"top-right",
|
|
11197
|
-
"bottom-left",
|
|
11198
|
-
"bottom-right"
|
|
11199
|
-
]
|
|
12075
|
+
variableAnchors: ["right"]
|
|
11200
12076
|
}
|
|
11201
12077
|
},
|
|
11202
12078
|
town: {
|
|
11203
12079
|
minZoom: 2,
|
|
11204
|
-
maxZoom:
|
|
11205
|
-
priority:
|
|
12080
|
+
maxZoom: 13,
|
|
12081
|
+
priority: expr11.subtract(80, expr11.coalesce(expr11.get(field10("rank")), 20)),
|
|
11206
12082
|
text: {
|
|
11207
12083
|
color: streetsVisual.label.settlement,
|
|
11208
|
-
haloColor:
|
|
12084
|
+
haloColor: streetsVisual.label.placeHalo,
|
|
11209
12085
|
haloBlur: 1,
|
|
11210
12086
|
haloWidth: 1,
|
|
11211
12087
|
lineHeight: 1.1,
|
|
11212
12088
|
maxWidth: 7,
|
|
11213
12089
|
padding: 1,
|
|
11214
|
-
radialOffset:
|
|
12090
|
+
radialOffset: zoom10.step([
|
|
11215
12091
|
[2, 0.55],
|
|
11216
|
-
[8, 0
|
|
11217
|
-
[11, 0]
|
|
12092
|
+
[8, 0]
|
|
11218
12093
|
]),
|
|
11219
|
-
size:
|
|
12094
|
+
size: expr11.interpolate(
|
|
11220
12095
|
{ kind: "cubic-bezier", x1: 0.2, x2: 0.9, y1: 0, y2: 1 },
|
|
11221
|
-
|
|
12096
|
+
expr11.zoom(),
|
|
11222
12097
|
[
|
|
11223
|
-
[3,
|
|
12098
|
+
[3, expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 11, [[9, 10]])],
|
|
11224
12099
|
[
|
|
11225
12100
|
6,
|
|
11226
|
-
|
|
12101
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 14, [
|
|
11227
12102
|
[9, 12],
|
|
11228
12103
|
[12, 10]
|
|
11229
12104
|
])
|
|
11230
12105
|
],
|
|
11231
12106
|
[
|
|
11232
12107
|
8,
|
|
11233
|
-
|
|
12108
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 16, [
|
|
11234
12109
|
[9, 14],
|
|
11235
12110
|
[12, 12],
|
|
11236
12111
|
[15, 10]
|
|
@@ -11238,7 +12113,7 @@ var streets = bindOfficialMapTheme(
|
|
|
11238
12113
|
],
|
|
11239
12114
|
[
|
|
11240
12115
|
13,
|
|
11241
|
-
|
|
12116
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 22, [
|
|
11242
12117
|
[9, 20],
|
|
11243
12118
|
[12, 16],
|
|
11244
12119
|
[15, 14]
|
|
@@ -11246,7 +12121,7 @@ var streets = bindOfficialMapTheme(
|
|
|
11246
12121
|
]
|
|
11247
12122
|
]
|
|
11248
12123
|
),
|
|
11249
|
-
font: streetsVisual.font.
|
|
12124
|
+
font: streetsVisual.font.regular,
|
|
11250
12125
|
variableAnchors: [
|
|
11251
12126
|
"left",
|
|
11252
12127
|
"right",
|
|
@@ -11261,36 +12136,35 @@ var streets = bindOfficialMapTheme(
|
|
|
11261
12136
|
},
|
|
11262
12137
|
village: {
|
|
11263
12138
|
minZoom: 2,
|
|
11264
|
-
maxZoom:
|
|
11265
|
-
priority:
|
|
12139
|
+
maxZoom: 13,
|
|
12140
|
+
priority: expr11.subtract(65, expr11.coalesce(expr11.get(field10("rank")), 20)),
|
|
11266
12141
|
text: {
|
|
11267
12142
|
color: streetsVisual.label.settlement,
|
|
11268
|
-
haloColor:
|
|
12143
|
+
haloColor: streetsVisual.label.placeHalo,
|
|
11269
12144
|
haloBlur: 1,
|
|
11270
12145
|
haloWidth: 1,
|
|
11271
12146
|
lineHeight: 1.1,
|
|
11272
12147
|
maxWidth: 7,
|
|
11273
12148
|
padding: 1,
|
|
11274
|
-
radialOffset:
|
|
12149
|
+
radialOffset: zoom10.step([
|
|
11275
12150
|
[2, 0.55],
|
|
11276
|
-
[8, 0
|
|
11277
|
-
[11, 0]
|
|
12151
|
+
[8, 0]
|
|
11278
12152
|
]),
|
|
11279
|
-
size:
|
|
12153
|
+
size: expr11.interpolate(
|
|
11280
12154
|
{ kind: "cubic-bezier", x1: 0.2, x2: 0.9, y1: 0, y2: 1 },
|
|
11281
|
-
|
|
12155
|
+
expr11.zoom(),
|
|
11282
12156
|
[
|
|
11283
|
-
[3,
|
|
12157
|
+
[3, expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 11, [[9, 10]])],
|
|
11284
12158
|
[
|
|
11285
12159
|
6,
|
|
11286
|
-
|
|
12160
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 14, [
|
|
11287
12161
|
[9, 12],
|
|
11288
12162
|
[12, 10]
|
|
11289
12163
|
])
|
|
11290
12164
|
],
|
|
11291
12165
|
[
|
|
11292
12166
|
8,
|
|
11293
|
-
|
|
12167
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 16, [
|
|
11294
12168
|
[9, 14],
|
|
11295
12169
|
[12, 12],
|
|
11296
12170
|
[15, 10]
|
|
@@ -11298,7 +12172,7 @@ var streets = bindOfficialMapTheme(
|
|
|
11298
12172
|
],
|
|
11299
12173
|
[
|
|
11300
12174
|
13,
|
|
11301
|
-
|
|
12175
|
+
expr11.step(expr11.coalesce(expr11.get(field10("rank")), 99), 22, [
|
|
11302
12176
|
[9, 20],
|
|
11303
12177
|
[12, 16],
|
|
11304
12178
|
[15, 14]
|
|
@@ -11306,7 +12180,7 @@ var streets = bindOfficialMapTheme(
|
|
|
11306
12180
|
]
|
|
11307
12181
|
]
|
|
11308
12182
|
),
|
|
11309
|
-
font: streetsVisual.font.
|
|
12183
|
+
font: streetsVisual.font.regular,
|
|
11310
12184
|
variableAnchors: [
|
|
11311
12185
|
"left",
|
|
11312
12186
|
"right",
|
|
@@ -11321,46 +12195,40 @@ var streets = bindOfficialMapTheme(
|
|
|
11321
12195
|
},
|
|
11322
12196
|
neighborhood: {
|
|
11323
12197
|
minZoom: 10,
|
|
11324
|
-
maxZoom:
|
|
11325
|
-
priority:
|
|
12198
|
+
maxZoom: 15,
|
|
12199
|
+
priority: expr11.subtract(65, expr11.coalesce(expr11.get(field10("rank")), 20)),
|
|
11326
12200
|
text: {
|
|
12201
|
+
font: streetsVisual.font.default,
|
|
11327
12202
|
color: streetsVisual.label.neighborhood,
|
|
11328
|
-
haloColor:
|
|
11329
|
-
haloBlur: 0
|
|
12203
|
+
haloColor: streetsVisual.label.placeHalo,
|
|
12204
|
+
haloBlur: 0,
|
|
11330
12205
|
haloWidth: 1.3,
|
|
11331
|
-
letterSpacing:
|
|
11332
|
-
|
|
12206
|
+
letterSpacing: expr11.match(
|
|
12207
|
+
expr11.get(field10("class")),
|
|
11333
12208
|
[{ labels: "suburb", value: 0.15 }],
|
|
11334
12209
|
0.05
|
|
11335
12210
|
),
|
|
12211
|
+
lineHeight: 1.1,
|
|
11336
12212
|
maxWidth: 7,
|
|
11337
|
-
padding:
|
|
11338
|
-
size:
|
|
12213
|
+
padding: 3,
|
|
12214
|
+
size: expr11.interpolate(
|
|
11339
12215
|
{ kind: "cubic-bezier", x1: 0.5, x2: 1, y1: 0, y2: 1 },
|
|
11340
|
-
|
|
12216
|
+
expr11.zoom(),
|
|
11341
12217
|
[
|
|
11342
12218
|
[
|
|
11343
|
-
|
|
11344
|
-
|
|
11345
|
-
|
|
11346
|
-
[{ labels: "suburb", value: 10.5 }],
|
|
11347
|
-
10
|
|
11348
|
-
)
|
|
11349
|
-
],
|
|
11350
|
-
[
|
|
11351
|
-
12,
|
|
11352
|
-
expr9.match(
|
|
11353
|
-
expr9.get(field8("class")),
|
|
12219
|
+
11,
|
|
12220
|
+
expr11.match(
|
|
12221
|
+
expr11.get(field10("class")),
|
|
11354
12222
|
[{ labels: "suburb", value: 12 }],
|
|
11355
12223
|
11.5
|
|
11356
12224
|
)
|
|
11357
12225
|
],
|
|
11358
12226
|
[
|
|
11359
12227
|
15,
|
|
11360
|
-
|
|
11361
|
-
|
|
11362
|
-
[{ labels: "suburb", value:
|
|
11363
|
-
|
|
12228
|
+
expr11.match(
|
|
12229
|
+
expr11.get(field10("class")),
|
|
12230
|
+
[{ labels: "suburb", value: 16 }],
|
|
12231
|
+
15
|
|
11364
12232
|
)
|
|
11365
12233
|
]
|
|
11366
12234
|
]
|
|
@@ -11373,11 +12241,12 @@ var streets = bindOfficialMapTheme(
|
|
|
11373
12241
|
maxZoom: 16,
|
|
11374
12242
|
priority: 40,
|
|
11375
12243
|
text: {
|
|
12244
|
+
font: streetsVisual.font.default,
|
|
11376
12245
|
color: streetsVisual.label.neighborhood,
|
|
11377
|
-
haloColor:
|
|
12246
|
+
haloColor: streetsVisual.label.placeHalo,
|
|
11378
12247
|
haloBlur: 0.5,
|
|
11379
12248
|
haloWidth: 1,
|
|
11380
|
-
size:
|
|
12249
|
+
size: zoom10.linear([
|
|
11381
12250
|
[11, 10],
|
|
11382
12251
|
[15, 14]
|
|
11383
12252
|
])
|
|
@@ -11385,32 +12254,17 @@ var streets = bindOfficialMapTheme(
|
|
|
11385
12254
|
}
|
|
11386
12255
|
},
|
|
11387
12256
|
junctions: {
|
|
11388
|
-
//
|
|
11389
|
-
minZoom:
|
|
12257
|
+
// Standard exit references start at z14 and use the shield weight.
|
|
12258
|
+
minZoom: 14,
|
|
11390
12259
|
placement: "point",
|
|
11391
12260
|
text: {
|
|
11392
12261
|
color: streetsVisual.label.road,
|
|
11393
|
-
font: streetsVisual.font.
|
|
12262
|
+
font: streetsVisual.font.places,
|
|
11394
12263
|
haloColor: streetsDetailPalette.halo,
|
|
11395
|
-
haloWidth:
|
|
11396
|
-
size:
|
|
12264
|
+
haloWidth: 1,
|
|
12265
|
+
size: 9
|
|
11397
12266
|
}
|
|
11398
12267
|
},
|
|
11399
|
-
roads: {
|
|
11400
|
-
motorway: { ...roadLabelStyle("major"), minZoom: 10 },
|
|
11401
|
-
trunk: { ...roadLabelStyle("major"), minZoom: 10 },
|
|
11402
|
-
primary: { ...roadLabelStyle("major"), minZoom: 12 },
|
|
11403
|
-
secondary: { ...roadLabelStyle("major"), minZoom: 12 },
|
|
11404
|
-
tertiary: { ...roadLabelStyle("major"), minZoom: 13 },
|
|
11405
|
-
minor: { ...roadLabelStyle("street"), minZoom: 13 },
|
|
11406
|
-
service: { ...roadLabelStyle("street"), minZoom: 15 },
|
|
11407
|
-
track: { ...roadLabelStyle("path"), visible: false },
|
|
11408
|
-
pathway: { ...roadLabelStyle("path"), minZoom: 15 },
|
|
11409
|
-
footway: { ...roadLabelStyle("path"), minZoom: 15 },
|
|
11410
|
-
cycleway: { ...roadLabelStyle("path"), minZoom: 15 },
|
|
11411
|
-
steps: { ...roadLabelStyle("path"), minZoom: 15 },
|
|
11412
|
-
pedestrian: { ...roadLabelStyle("pedestrian"), minZoom: 12 }
|
|
11413
|
-
},
|
|
11414
12268
|
shields: {
|
|
11415
12269
|
default: {
|
|
11416
12270
|
minZoom: 6,
|
|
@@ -11444,7 +12298,7 @@ var streets = bindOfficialMapTheme(
|
|
|
11444
12298
|
detail: {
|
|
11445
12299
|
// Core switches to line placement at street scale while retaining viewport
|
|
11446
12300
|
// alignment, so each route reference remains horizontal during navigation.
|
|
11447
|
-
spacing:
|
|
12301
|
+
spacing: zoom10.linear([
|
|
11448
12302
|
[11, 400],
|
|
11449
12303
|
[14, 600]
|
|
11450
12304
|
])
|
|
@@ -11469,11 +12323,12 @@ var streets = bindOfficialMapTheme(
|
|
|
11469
12323
|
minZoom: 1,
|
|
11470
12324
|
priority: 70,
|
|
11471
12325
|
text: {
|
|
12326
|
+
font: streetsVisual.font.water,
|
|
11472
12327
|
color: streetsDetailPalette.waterText,
|
|
11473
12328
|
haloColor: streetsVisual.label.waterHalo,
|
|
11474
|
-
haloWidth: 0
|
|
11475
|
-
letterSpacing: 0.
|
|
11476
|
-
size:
|
|
12329
|
+
haloWidth: 0,
|
|
12330
|
+
letterSpacing: 0.25,
|
|
12331
|
+
size: zoom10.linear([
|
|
11477
12332
|
[1, 12],
|
|
11478
12333
|
[8, 18]
|
|
11479
12334
|
])
|
|
@@ -11484,10 +12339,11 @@ var streets = bindOfficialMapTheme(
|
|
|
11484
12339
|
maxZoom: 15,
|
|
11485
12340
|
priority: 60,
|
|
11486
12341
|
text: {
|
|
12342
|
+
font: streetsVisual.font.water,
|
|
11487
12343
|
color: streetsDetailPalette.waterText,
|
|
11488
12344
|
haloColor: streetsVisual.label.waterHalo,
|
|
11489
|
-
haloWidth: 0
|
|
11490
|
-
size:
|
|
12345
|
+
haloWidth: 0,
|
|
12346
|
+
size: zoom10.linear([
|
|
11491
12347
|
[5, 11],
|
|
11492
12348
|
[14, 16]
|
|
11493
12349
|
])
|
|
@@ -11498,12 +12354,20 @@ var streets = bindOfficialMapTheme(
|
|
|
11498
12354
|
placement: "line-center",
|
|
11499
12355
|
priority: 65,
|
|
11500
12356
|
text: {
|
|
12357
|
+
font: streetsVisual.font.water,
|
|
11501
12358
|
color: streetsDetailPalette.waterText,
|
|
11502
12359
|
haloColor: streetsVisual.label.waterHalo,
|
|
11503
|
-
haloWidth: 0
|
|
11504
|
-
letterSpacing:
|
|
12360
|
+
haloWidth: 0,
|
|
12361
|
+
letterSpacing: expr11.match(
|
|
12362
|
+
expr11.get(field10("class")),
|
|
12363
|
+
[
|
|
12364
|
+
{ labels: "ocean", value: 0.25 },
|
|
12365
|
+
{ labels: ["sea", "bay"], value: 0.15 }
|
|
12366
|
+
],
|
|
12367
|
+
0
|
|
12368
|
+
),
|
|
11505
12369
|
maxAngle: 30,
|
|
11506
|
-
size:
|
|
12370
|
+
size: zoom10.linear([
|
|
11507
12371
|
[1, 12],
|
|
11508
12372
|
[8, 18]
|
|
11509
12373
|
])
|
|
@@ -11512,15 +12376,17 @@ var streets = bindOfficialMapTheme(
|
|
|
11512
12376
|
waterway: {
|
|
11513
12377
|
minZoom: 13,
|
|
11514
12378
|
placement: "line",
|
|
11515
|
-
spacing:
|
|
12379
|
+
spacing: zoom10.linear([
|
|
11516
12380
|
[15, 250],
|
|
11517
12381
|
[17, 400]
|
|
11518
12382
|
]),
|
|
11519
12383
|
text: {
|
|
12384
|
+
font: streetsVisual.font.water,
|
|
11520
12385
|
color: streetsDetailPalette.waterText,
|
|
11521
12386
|
haloColor: streetsVisual.label.waterHalo,
|
|
12387
|
+
haloWidth: 0,
|
|
11522
12388
|
maxAngle: 30,
|
|
11523
|
-
size:
|
|
12389
|
+
size: zoom10.linear([
|
|
11524
12390
|
[13, 12],
|
|
11525
12391
|
[18, 18]
|
|
11526
12392
|
])
|
|
@@ -11531,13 +12397,14 @@ var streets = bindOfficialMapTheme(
|
|
|
11531
12397
|
minZoom: 8,
|
|
11532
12398
|
priority: 68,
|
|
11533
12399
|
text: {
|
|
12400
|
+
font: streetsVisual.font.default,
|
|
11534
12401
|
color: streetsDetailPalette.transit,
|
|
11535
12402
|
haloColor: streetsDetailPalette.halo,
|
|
11536
12403
|
haloWidth: 1,
|
|
11537
12404
|
letterSpacing: 0.01,
|
|
11538
12405
|
lineHeight: 1.1,
|
|
11539
12406
|
maxWidth: 9,
|
|
11540
|
-
size:
|
|
12407
|
+
size: zoom10.linear([
|
|
11541
12408
|
[8, 12],
|
|
11542
12409
|
[14, 15]
|
|
11543
12410
|
])
|
|
@@ -11548,9 +12415,9 @@ var streets = bindOfficialMapTheme(
|
|
|
11548
12415
|
streetsLabelRenderStack()
|
|
11549
12416
|
),
|
|
11550
12417
|
poi: poi4({
|
|
11551
|
-
// World owns
|
|
11552
|
-
//
|
|
11553
|
-
//
|
|
12418
|
+
// World owns taxonomy, zoom eligibility, density ranks and importance. Streets
|
|
12419
|
+
// shows every category at one density and places them all in World's importance
|
|
12420
|
+
// order, so collision keeps the most relevant places whatever their category.
|
|
11554
12421
|
categories: [
|
|
11555
12422
|
"transport",
|
|
11556
12423
|
"food-drink",
|
|
@@ -11574,26 +12441,30 @@ var streets = bindOfficialMapTheme(
|
|
|
11574
12441
|
icons: true,
|
|
11575
12442
|
labels: true,
|
|
11576
12443
|
placement: {
|
|
11577
|
-
// One collision unit:
|
|
11578
|
-
//
|
|
12444
|
+
// One collision unit: a POI shows its disc and its name, or nothing. Parking and
|
|
12445
|
+
// toilets, whose pictogram says what they are, show the disc alone.
|
|
11579
12446
|
coupleIconAndLabel: true,
|
|
11580
|
-
iconPadding:
|
|
11581
|
-
|
|
12447
|
+
iconPadding: 3,
|
|
12448
|
+
order: "importance",
|
|
12449
|
+
// Street and place names outrank everyday destinations ('navigation' labels), but
|
|
12450
|
+
// not the places that make a city recognisable: World's two most important ranks.
|
|
12451
|
+
prominentRank: 1,
|
|
12452
|
+
textPadding: 3
|
|
11582
12453
|
},
|
|
11583
12454
|
styles: {
|
|
11584
|
-
"arts-entertainment":
|
|
11585
|
-
education:
|
|
11586
|
-
"food-drink": streetsPoiStyle,
|
|
11587
|
-
landmark:
|
|
11588
|
-
lodging:
|
|
11589
|
-
medical:
|
|
11590
|
-
"park-nature":
|
|
11591
|
-
"public-services":
|
|
11592
|
-
religion:
|
|
11593
|
-
retail: streetsPoiStyle,
|
|
11594
|
-
"sport-leisure": streetsPoiStyle,
|
|
11595
|
-
transport: streetsPoiStyle,
|
|
11596
|
-
"visitor-amenity":
|
|
12455
|
+
"arts-entertainment": streetsPoiStyle("arts-entertainment"),
|
|
12456
|
+
education: streetsPoiStyle("education"),
|
|
12457
|
+
"food-drink": streetsPoiStyle("food-drink"),
|
|
12458
|
+
landmark: streetsPoiStyle("landmark"),
|
|
12459
|
+
lodging: streetsPoiStyle("lodging"),
|
|
12460
|
+
medical: streetsPoiStyle("medical"),
|
|
12461
|
+
"park-nature": streetsPoiStyle("park-nature"),
|
|
12462
|
+
"public-services": streetsPoiStyle("public-services"),
|
|
12463
|
+
religion: streetsPoiStyle("religion"),
|
|
12464
|
+
retail: streetsPoiStyle("retail"),
|
|
12465
|
+
"sport-leisure": streetsPoiStyle("sport-leisure"),
|
|
12466
|
+
transport: streetsPoiStyle("transport"),
|
|
12467
|
+
"visitor-amenity": streetsPoiStyle("visitor-amenity")
|
|
11597
12468
|
}
|
|
11598
12469
|
})
|
|
11599
12470
|
},
|
|
@@ -11634,5 +12505,6 @@ export {
|
|
|
11634
12505
|
soundingsIcons,
|
|
11635
12506
|
streets2 as streets,
|
|
11636
12507
|
streetsIcons,
|
|
12508
|
+
streetsModels,
|
|
11637
12509
|
streetsThemes
|
|
11638
12510
|
};
|