[gnome-maps/wip/mlundblad/additional-place-icons: 4/6] WIP: Add utility module for place icons




commit a507a7de50283c921a153853a923e74c41a9e0f9
Author: Marcus Lundblad <ml update uu se>
Date:   Tue Apr 13 23:13:50 2021 +0200

    WIP: Add utility module for place icons
    
    Add function for mapping place icon names
    to places based on types.

 src/org.gnome.Maps.src.gresource.xml |   1 +
 src/placeIcons.js                    | 103 +++++++++++++++++++++++++++++++++++
 2 files changed, 104 insertions(+)
---
diff --git a/src/org.gnome.Maps.src.gresource.xml b/src/org.gnome.Maps.src.gresource.xml
index cec373ea..3c5bc128 100644
--- a/src/org.gnome.Maps.src.gresource.xml
+++ b/src/org.gnome.Maps.src.gresource.xml
@@ -62,6 +62,7 @@
     <file>placeDialog.js</file>
     <file>placeEntry.js</file>
     <file>placeFormatter.js</file>
+    <file>placeIcons.js</file>
     <file>placeListRow.js</file>
     <file>placeMarker.js</file>
     <file>placePopover.js</file>
diff --git a/src/placeIcons.js b/src/placeIcons.js
new file mode 100644
index 00000000..5aa02801
--- /dev/null
+++ b/src/placeIcons.js
@@ -0,0 +1,103 @@
+/* -*- Mode: JS2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- */
+/* vim: set et ts=4 sw=4: */
+/*
+ * Copyright (c) 2021 Marcus Lundblad
+ *
+ * GNOME Maps is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * GNOME Maps is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with GNOME Maps; if not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Marcus Lundblad <ml update uu se>
+ */
+
+const TYPE_ICON_MAP = {
+    'aeroway': {
+        'aerodrome': 'route-transit-airplane-symbolic'
+    },
+    'amenity': {
+        'bar':              'bar-symbolic',
+        'bus_station':      'route-transit-bus-symbolic',
+        'cafe':             'cafe-symbolic',
+        'charging_station': 'electric-car-symbolic',
+        'cinema':           'video-camera-symbolic',
+        'clinic':           'hospital-sign-symbolic',
+        'doctors':          'hospital-sign-symbolic',
+        'ferry_terminal':   'route-transit-ferry-symbolic',
+        'fuel':             'fuel-symbolic',
+        'hospital':         'hospital-symbolic',
+        'night_club':       'bar-symbolic',
+        'parking':          'parking-sign-symbolic',
+        'post_office':      'post-box-symbolic',
+        'pub':              'pub-symbolic',
+        'restaurant':       'restaurant-symbolic',
+        'school':           'school-symbolic',
+        'university':       'school-symbolic'
+    },
+    'building': {
+        'yes':              'building-symbolic',
+        'railway_station':  'route-transit-train'
+    },
+    'highway': {
+        'bus_stop':         'route-transit-bus-symbolic',
+        'motorway':         'route-car-symbolic',
+        'motorway_link':    'route-car-symbolic',
+        'trunk':            'route-car-symbolic',
+        'trunk_link':       'route-car-symbolic',
+        'primary':          'route-car-symbolic',
+        'primary_link':     'route-car-symbolic',
+        'secondary':        'route-car-symbolic',
+        'secondary_link':   'route-car-symbolic',
+        'tertiary':         'route-car-symbolic',
+        'tertiary_link':    'route-car-symbolic',
+        'unclassified':     'route-car-symbolic',
+        'residential':      'route-car-symbolic',
+        'living_street':    'route-car-symbolic',
+        'service':          'route-car-symbolic',
+        'track':            'route-car-symbolic',
+        'cycleway':         'route-bike-symbolic',
+        'footway':          'route-pedestrian-symbolic',
+        'pedestrian':       'route-pedestrian-symbolic',
+        'steps':            'route-pedestrian-symbolic',
+        'path':             'route-pedestrian-symbolic'
+    },
+    'leisure': {
+        'nature_reserve':   'tree-symbolic',
+        'park':             'tree-symbolic'
+    },
+    'natural': {
+        'peak':             'mountain-symbolic'
+    },
+    'office': {
+        '':                 'building-symbolic'
+    },
+    'tourism': {
+        'attraction':       'photo-camera-symbolic',
+        'artwork':          'photo-camera-symbolic',
+        'alpine_hut':       'bed-symbolic',
+        'hotel':            'bed-symbolic',
+        'hostel':           'bed-symbolic'
+    },
+    'railway': {
+        'halt':             'route-transit-train-symbolic',
+        'station':          'route-transit-train-symbolic',
+        'tram_stop':        'route-transit-tram-symbolic'
+    },
+    'shop': {
+        '':                 'shopping-cart-symbolic'
+    }
+};
+
+function getIconForPlace(place) {
+    return TYPE_ICON_MAP?.[place.osmKey]?.[place.osmValue] ??
+           TYPE_ICON_MAP?.[place.osmKey]?.[''] ?? 'map-marker-symbolic';
+}
+


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]