From bb77ed83371a7d0ff444dd95202d7f6dadfc1ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A2u=20Cao?= Date: Sun, 22 Mar 2026 19:13:19 +0400 Subject: [PATCH] Add more icons --- app/utils/icons.js | 20 ++++++++++++++++++++ app/utils/osm-icons.js | 28 ++++++++++++++++++++++++---- app/utils/poi-categories.js | 1 + 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/app/utils/icons.js b/app/utils/icons.js index 59c905f..7a741b3 100644 --- a/app/utils/icons.js +++ b/app/utils/icons.js @@ -29,9 +29,11 @@ import x from 'feather-icons/dist/icons/x.svg?raw'; import zap from 'feather-icons/dist/icons/zap.svg?raw'; import angelfish from '@waysidemapping/pinhead/dist/icons/angelfish.svg?raw'; +import barbell from '@waysidemapping/pinhead/dist/icons/barbell.svg?raw'; import beachUmbrellaInGround from '@waysidemapping/pinhead/dist/icons/beach_umbrella_in_ground.svg?raw'; import beerMugWithFoam from '@waysidemapping/pinhead/dist/icons/beer_mug_with_foam.svg?raw'; import burgerAndDrinkCupWithStraw from '@waysidemapping/pinhead/dist/icons/burger_and_drink_cup_with_straw.svg?raw'; +import boxingGloveUp from '@waysidemapping/pinhead/dist/icons/boxing_glove_up.svg?raw'; import camera from '@waysidemapping/pinhead/dist/icons/camera.svg?raw'; import classicalBuilding from '@waysidemapping/pinhead/dist/icons/classical_building.svg?raw'; import classicalBuildingWithDomeAndFlag from '@waysidemapping/pinhead/dist/icons/classical_building_with_dome_and_flag.svg?raw'; @@ -43,21 +45,29 @@ import croissant from '@waysidemapping/pinhead/dist/icons/croissant.svg?raw'; import cupAndSaucer from '@waysidemapping/pinhead/dist/icons/cup_and_saucer.svg?raw'; import donut from '@waysidemapping/pinhead/dist/icons/donut.svg?raw'; import film from '@waysidemapping/pinhead/dist/icons/film.svg?raw'; +import fish from '@waysidemapping/pinhead/dist/icons/fish.svg?raw'; import flagCheckered from '@waysidemapping/pinhead/dist/icons/flag_checkered.svg?raw'; import fort from '@waysidemapping/pinhead/dist/icons/fort.svg?raw'; import forkAndKnife from '@waysidemapping/pinhead/dist/icons/fork_and_knife.svg?raw'; +import gravestone from '@waysidemapping/pinhead/dist/icons/gravestone.svg?raw'; +import grecianVase from '@waysidemapping/pinhead/dist/icons/grecian_vase.svg?raw'; import iceCreamOnCone from '@waysidemapping/pinhead/dist/icons/ice_cream_on_cone.svg?raw'; +import marketStall from '@waysidemapping/pinhead/dist/icons/market_stall.svg?raw'; import memorialStoneWithInscription from '@waysidemapping/pinhead/dist/icons/memorial_stone_with_inscription.svg?raw'; import palace from '@waysidemapping/pinhead/dist/icons/palace.svg?raw'; import personCricketBattingAtCricketBall from '@waysidemapping/pinhead/dist/icons/person_cricket_batting_at_cricket_ball.svg?raw'; import personJockeyingRacehorse from '@waysidemapping/pinhead/dist/icons/person_jockeying_racehorse.svg?raw'; +import personPlayingTennis from '@waysidemapping/pinhead/dist/icons/person_playing_tennis.svg?raw'; import personRunning from '@waysidemapping/pinhead/dist/icons/person_running.svg?raw'; import personSleepingInBed from '@waysidemapping/pinhead/dist/icons/person_sleeping_in_bed.svg?raw'; import personSwimmingInWater from '@waysidemapping/pinhead/dist/icons/person_swimming_in_water.svg?raw'; import personSwingingGolfClub from '@waysidemapping/pinhead/dist/icons/person_swinging_golf_club.svg?raw'; +import planeTopRight from '@waysidemapping/pinhead/dist/icons/plane_top_right.svg?raw'; import roundStructureWithFlag from '@waysidemapping/pinhead/dist/icons/round_structure_with_flag.svg?raw'; import sailingShipInWater from '@waysidemapping/pinhead/dist/icons/sailing_ship_in_water.svg?raw'; +import shipwreckInWater from '@waysidemapping/pinhead/dist/icons/shipwreck_in_water.svg?raw'; import shoppingBasket from '@waysidemapping/pinhead/dist/icons/shopping_basket.svg?raw'; +import tableTennisPaddle from '@waysidemapping/pinhead/dist/icons/table_tennis_paddle.svg?raw'; import shoppingCart from '@waysidemapping/pinhead/dist/icons/shopping_cart.svg?raw'; import wallHangingWithMountainsAndSun from '@waysidemapping/pinhead/dist/icons/wall_hanging_with_mountains_and_sun.svg?raw'; @@ -67,9 +77,11 @@ const ICONS = { activity, angelfish, 'arrow-left': arrowLeft, + barbell, 'beach-umbrella-in-ground': beachUmbrellaInGround, 'beer-mug-with-foam': beerMugWithFoam, bookmark, + 'boxing-glove-up': boxingGloveUp, 'burger-and-drink-cup-with-straw': burgerAndDrinkCupWithStraw, camera, 'check-square': checkSquare, @@ -86,11 +98,14 @@ const ICONS = { edit, facebook, film, + fish, 'flag-checkered': flagCheckered, 'fork-and-knife': forkAndKnife, fort, gift, globe, + gravestone, + 'grecian-vase': grecianVase, heart, home, 'ice-cream-on-cone': iceCreamOnCone, @@ -101,25 +116,30 @@ const ICONS = { mail, map, 'map-pin': mapPin, + 'market-stall': marketStall, 'memorial-stone-with-inscription': memorialStoneWithInscription, menu, navigation, palace, 'person-cricket-batting-at-cricket-ball': personCricketBattingAtCricketBall, 'person-jockeying-racehorse': personJockeyingRacehorse, + 'person-playing-tennis': personPlayingTennis, 'person-running': personRunning, 'person-sleeping-in-bed': personSleepingInBed, 'person-swimming-in-water': personSwimmingInWater, 'person-swinging-golf-club': personSwingingGolfClub, phone, + 'plane-top-right': planeTopRight, plus, 'round-structure-with-flag': roundStructureWithFlag, 'sailing-ship-in-water': sailingShipInWater, + 'shipwreck-in-water': shipwreckInWater, search, server, settings, 'shopping-basket': shoppingBasket, 'shopping-cart': shoppingCart, + 'table-tennis-paddle': tableTennisPaddle, target, user, 'wall-hanging-with-mountains-and-sun': wallHangingWithMountainsAndSun, diff --git a/app/utils/osm-icons.js b/app/utils/osm-icons.js index 3f93c67..bd0c8b1 100644 --- a/app/utils/osm-icons.js +++ b/app/utils/osm-icons.js @@ -31,11 +31,18 @@ export const POI_ICON_RULES = [ { tags: { shop: 'greengrocer' }, icon: 'shopping-basket' }, { tags: { shop: 'bakery' }, icon: 'croissant' }, { tags: { shop: 'butcher' }, icon: 'cleaver' }, + { tags: { shop: 'seafood' }, icon: 'fish' }, { tags: { shop: 'deli' }, icon: 'shopping-basket' }, + { tags: { shop: 'flea_market' }, icon: 'market-stall' }, // Natural { tags: { natural: 'beach' }, icon: 'beach-umbrella-in-ground' }, + // Transport + { tags: { aeroway: 'aerodrome' }, icon: 'plane-top-right' }, + { tags: { aeroway: 'heliport' }, icon: 'plane-top-right' }, + { tags: { aeroway: 'helipad' }, icon: 'plane-top-right' }, + // Tourism { tags: { tourism: 'museum' }, icon: 'classical-building' }, { tags: { tourism: 'gallery' }, icon: 'wall-hanging-with-mountains-and-sun' }, @@ -54,13 +61,18 @@ export const POI_ICON_RULES = [ { tags: { historic: 'fort' }, icon: 'fort' }, { tags: { historic: 'castle' }, icon: 'palace' }, { tags: { historic: 'building' }, icon: 'classical-building-with-flag' }, - { tags: { historic: 'archaeological_site' }, icon: 'camera' }, + { tags: { historic: 'archaeological_site' }, icon: 'grecian-vase' }, { tags: { historic: 'memorial' }, icon: 'memorial-stone-with-inscription' }, + { tags: { historic: 'tomb' }, icon: 'gravestone' }, { tags: { historic: 'monument' }, icon: 'classical-building-with-dome-and-flag', }, { tags: { historic: 'ship' }, icon: 'sailing-ship-in-water' }, + { tags: { historic: 'wreck' }, icon: 'shipwreck-in-water' }, + { tags: { historic: 'ruins' }, icon: 'camera' }, + { tags: { historic: 'ruin' }, icon: 'camera' }, + { tags: { historic: 'yes' }, icon: 'camera' }, // Accommodation { tags: { tourism: 'hotel' }, icon: 'person-sleeping-in-bed' }, @@ -76,15 +88,23 @@ export const POI_ICON_RULES = [ tags: { sport: 'cricket' }, icon: 'person-cricket-batting-at-cricket-ball', }, + { tags: { sport: 'boxing' }, icon: 'boxing-glove-up' }, + { tags: { sport: 'martial_arts' }, icon: 'boxing-glove-up' }, + { tags: { sport: 'tennis' }, icon: 'person-playing-tennis' }, + { tags: { sport: 'squash' }, icon: 'person-playing-tennis' }, + { tags: { sport: 'padel' }, icon: 'person-playing-tennis' }, + { tags: { sport: 'table_tennis' }, icon: 'table-tennis-paddle' }, { tags: { leisure: 'water_park' }, icon: 'person-swimming-in-water' }, + { tags: { sport: 'swimming' }, icon: 'person-swimming-in-water' }, { tags: { sport: 'golf' }, icon: 'person-swinging-golf-club' }, { tags: { leisure: 'golf_course' }, icon: 'person-swinging-golf-club' }, { tags: { sport: 'horse_racing' }, icon: 'person-jockeying-racehorse' }, - { tags: { leisure: 'stadium' }, icon: 'round-structure-with-flag' }, - { tags: { sport: 'stadium' }, icon: 'round-structure-with-flag' }, + { tags: { sport: 'fitness' }, icon: 'barbell' }, + { tags: { sport: 'fitness_centre' }, icon: 'barbell' }, + { tags: { sport: 'stadium' }, icon: 'round-structure-with-flag' }, + { tags: { leisure: 'stadium' }, icon: 'round-structure-with-flag' }, { tags: { leisure: 'sports_centre' }, icon: 'person-running' }, - { tags: { sport: 'fitness_centre' }, icon: 'person-running' }, ]; /** diff --git a/app/utils/poi-categories.js b/app/utils/poi-categories.js index 69c6bfe..ca8aade 100644 --- a/app/utils/poi-categories.js +++ b/app/utils/poi-categories.js @@ -45,6 +45,7 @@ export const POI_CATEGORIES = [ '["amenity"~"^(cinema|theatre|arts_centre|planetarium)$"]', '["leisure"~"^(sports_centre|stadium|water_park)$"]', '["historic"]', + '["shop"="flea_market"]', ], types: ['node', 'way', 'relation'], },