From b6d0eb35655890bd4a8eb4eff297fb1ed6e78e89 Mon Sep 17 00:00:00 2001
From: Benjamin Faershtein <119711889+RCGV1@users.noreply.github.com>
Date: Sat, 21 Feb 2026 13:39:50 -0800
Subject: [PATCH] fully fixed markers
---
.../Accessory Manager/AccessoryManager.swift | 2 +-
.../Helpers/TAK/TAKMeshtasticBridge.swift | 748 +++++++++++++-----
2 files changed, 564 insertions(+), 186 deletions(-)
diff --git a/Meshtastic/Accessory/Accessory Manager/AccessoryManager.swift b/Meshtastic/Accessory/Accessory Manager/AccessoryManager.swift
index fa1211ae..0e1c5a84 100644
--- a/Meshtastic/Accessory/Accessory Manager/AccessoryManager.swift
+++ b/Meshtastic/Accessory/Accessory Manager/AccessoryManager.swift
@@ -526,7 +526,7 @@ class AccessoryManager: ObservableObject, MqttClientProxyManagerDelegate {
bridge.context = AccessoryManager.shared.context
server.bridge = bridge
}
- await server.bridge?.broadcastMeshTextMessageToTAK(text: text, from: packet.from, channel: packet.channel)
+ await server.bridge?.broadcastMeshTextMessageToTAK(text: text, from: packet.from, channel: packet.channel, to: packet.to)
}
}
case .remoteHardwareApp:
diff --git a/Meshtastic/Helpers/TAK/TAKMeshtasticBridge.swift b/Meshtastic/Helpers/TAK/TAKMeshtasticBridge.swift
index a38b43e0..e455f1cf 100644
--- a/Meshtastic/Helpers/TAK/TAKMeshtasticBridge.swift
+++ b/Meshtastic/Helpers/TAK/TAKMeshtasticBridge.swift
@@ -610,7 +610,12 @@ final class TAKMeshtasticBridge {
/// Broadcast a Meshtastic text message to connected TAK clients
/// Called when a text message is received from the mesh
- func broadcastMeshTextMessageToTAK(text: String, from nodeNum: UInt32, channel: UInt32) async {
+ /// - Parameters:
+ /// - text: The message text
+ /// - from: The sender node number
+ /// - channel: The channel index
+ /// - to: The destination node number (UInt32.max for broadcast)
+ func broadcastMeshTextMessageToTAK(text: String, from nodeNum: UInt32, channel: UInt32, to destination: UInt32) async {
// Lazy initialization of bridge if needed
if TAKServerManager.shared.bridge == nil {
Logger.tak.info("Initializing bridge lazily for text message broadcast")
@@ -632,8 +637,21 @@ final class TAKMeshtasticBridge {
let senderName = user.longName ?? user.shortName ?? "Unknown"
let uid = "MSG-\(nodeNum)-\(Int(Date().timeIntervalSince1970))"
+ // Determine if this is a DM or broadcast
+ let isDirectMessage = destination != UInt32.max
+
+ // For now, send all messages to general chat but mark DMs in the message
+ let chatroom = "All Chat Rooms"
+
+ Logger.tak.info("Text message: isDM=\(isDirectMessage), chatroom=\(chatroom), from=\(senderName)")
+
+ let senderUid = "MESHTASTIC-\(String(format: "%08X", nodeNum))"
+
+ // Prefix DM messages with "DM:" so users know it's a direct message
+ let messageText = isDirectMessage ? "DM: \(text)" : text
+
let cotMessage = CoTMessage(
- uid: "GeoChat.MESHTASTIC-\(String(format: "%08X", nodeNum)).Channel\(channel).\(uid)",
+ uid: "GeoChat.\(senderUid).\(chatroom.replacingOccurrences(of: " ", with: "_")).\(uid)",
type: "b-t-f",
time: Date(),
start: Date(),
@@ -644,16 +662,17 @@ final class TAKMeshtasticBridge {
hae: 9999999.0,
ce: 9999999.0,
le: 9999999.0,
+ contact: CoTContact(callsign: senderName, endpoint: "0.0.0.0:4242:tcp"),
chat: CoTChat(
- message: text,
+ message: messageText,
senderCallsign: senderName,
- chatroom: "All Chat Rooms"
+ chatroom: chatroom
),
- remarks: text
+ remarks: messageText
)
await server.broadcast(cotMessage)
- Logger.tak.info("Broadcast mesh text message to TAK: \(senderName)")
+ Logger.tak.info("Broadcast mesh text message to TAK: \(senderName) to \(chatroom)")
}
/// Broadcast a Meshtastic waypoint to connected TAK clients
@@ -701,7 +720,6 @@ final class TAKMeshtasticBridge {
// Map Meshtastic emoji icon to appropriate TAK icon
let (cotType, iconPath, colorArgb) = getTakIconForWaypoint(waypoint: waypoint)
let userIconXML = ""
- let colorXML = ""
Logger.tak.info("Waypoint icon: emoji=0x\(String(format: "%08X", waypoint.icon)) -> \(iconPath)")
// Handle expiry - if expire is 0, never expire. Otherwise use the expire time
@@ -722,8 +740,8 @@ final class TAKMeshtasticBridge {
}
}
- // Include the usericon and color in the detail
- let rawDetail = "\(userIconXML)\(colorXML)"
+ // Include the usericon in the detail (no color to avoid background in TAKware)
+ let rawDetail = "\(userIconXML)"
let cotMessage = CoTMessage(
uid: uid,
@@ -746,296 +764,656 @@ final class TAKMeshtasticBridge {
Logger.tak.info("Broadcast mesh waypoint to TAK: \(name) from \(senderName)")
}
- /// Map Meshtastic waypoint emoji to TAK icon using Google markers
+ /// Map Meshtastic waypoint emoji to TAK icon
/// Returns (cotType, iconPath, colorArgb)
- /// Google markers are the only reliable icon type across all TAK clients (ATAK, iTAK, WinTAK)
- /// Icons sourced from iconsets.sqlite database - Google iconset (UUID: f7f71666-8b28-4b57-9fbb-e38e61d33b79)
+ /// Icon paths use format: UUID/Category/icon.png
+ /// Priority: Google > Generic Icons (fallback)
private func getTakIconForWaypoint(waypoint: Waypoint) -> (String, String, String) {
let icon = waypoint.icon
- // Google marker base UUID
- let googleBase = "f7f71666-8b28-4b57-9fbb-e38e61d33b79/Google"
+ // Icon set UUIDs
+ let googleUUID = "f7f71666-8b28-4b57-9fbb-e38e61d33b79"
+ let genericUUID = "ad78aafb-83a6-4c07-b2b9-a897a8b6a38f"
switch icon {
// đ đ Pushpin - RED pushpin (default)
case 0x1F4CD, 0x1F4CC, 1: // đ đ
- return ("a-u-G", "\(googleBase)/red-pushpin.png", "-16776961")
+ return ("a-u-G", "\(genericUUID)/Tacks/red-pushpin.png", "-16776961")
// === EMERGENCY ===
- // đĨ Fire - firedept
+ // đĨ Fire - Google firedept
case 0x1F525, 10: // đĨ
- return ("a-u-G", "\(googleBase)/firedept.png", "-16776961")
- // đ¨ Siren - caution
+ return ("a-u-G", "\(googleUUID)/Google/firedept.png", "-16776961")
+ // đ¨ Siren - Google caution
case 0x1F6A8, 6: // đ¨
- return ("a-u-G", "\(googleBase)/caution.png", "-256")
- // đĨ Hospital - hospitals
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-256")
+ // đĨ Hospital - Google hospitals
case 0x1F3E5, 0x2695, 9: // đĨ â
- return ("a-u-G", "\(googleBase)/hospitals.png", "-16776961")
- // đ Ambulance - use hospitals
+ return ("a-u-G", "\(googleUUID)/Google/hospitals.png", "-16776961")
+ // đ Ambulance - Google hospitals (no ambulance in Google)
case 0x1F691: // đ
- return ("a-u-G", "\(googleBase)/hospitals.png", "-16776961")
- // â ī¸ Warning - caution
+ return ("a-u-G", "\(googleUUID)/Google/hospitals.png", "-16776961")
+ // â ī¸ Warning - Google caution
case 0x26A0: // â ī¸
- return ("a-u-G", "\(googleBase)/caution.png", "-256")
- // đ Police - police
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-256")
+ // đ Police - Google police
case 0x1F693: // đ
- return ("a-u-G", "\(googleBase)/police.png", "-16776961")
+ return ("a-u-G", "\(googleUUID)/Google/police.png", "-16776961")
+ // đ Runner - Google man
+ case 0x1F3C3: // đ
+ return ("a-u-G", "\(googleUUID)/Google/man.png", "-16711936")
+ // đ Skull - Google caution
+ case 0x1F480: // đ
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-1")
+ // đŖ Bomb - Google caution
+ case 0x1F4A3: // đŖ
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-16776961")
// === TRANSPORT ===
- // đ Car - bus (closest available)
+ // đ Car - Google bus (closest)
case 0x1F697, 0x1F695, 2: // đ đ
- return ("a-u-G", "\(googleBase)/bus.png", "-256")
- // đ Helicopter - heliport
+ return ("a-u-G", "\(googleUUID)/Google/bus.png", "-256")
+ // đ Helicopter - Google heliport
case 0x1F681, 11: // đ
- return ("a-u-G", "\(googleBase)/heliport.png", "-16776961")
- // âĩ Boat - marina
+ return ("a-u-G", "\(googleUUID)/Google/heliport.png", "-16776961")
+ // âĩ Boat - Google marina
case 0x1F6B5, 12: // âĩ
- return ("a-u-G", "\(googleBase)/marina.png", "-16776961")
- // đĸ Ship - use marina
+ return ("a-u-G", "\(googleUUID)/Google/marina.png", "-16776961")
+ // đĸ Ship - Google marina
case 0x1F6A2: // đĸ
- return ("a-u-G", "\(googleBase)/marina.png", "-16776961")
- // đ Rocket - use target
+ return ("a-u-G", "\(googleUUID)/Google/marina.png", "-16776961")
+ // đ Rocket - Google target
case 0x1F680: // đ
- return ("a-u-G", "\(googleBase)/target.png", "-16776961")
- // đ¸ UFO - use purple pushpin
+ return ("a-u-G", "\(googleUUID)/Google/target.png", "-16776961")
+ // đ¸ UFO - Generic purple pushpin
case 0x1F6B5, 13: // đ¸
- return ("a-u-G", "\(googleBase)/purple-pushpin.png", "-65281")
- // đ˛ Bicycle - cycling
+ return ("a-u-G", "\(genericUUID)/Tacks/purple-pushpin.png", "-65281")
+ // đ˛ Bicycle - Google cycling
case 0x1F6B2: // đ˛
- return ("a-u-G", "\(googleBase)/cycling.png", "-16711936")
- // đ Train - rail
+ return ("a-u-G", "\(googleUUID)/Google/cycling.png", "-16711936")
+ // đ Train - Google rail
case 0x1F686: // đ
- return ("a-u-G", "\(googleBase)/rail.png", "-16711936")
- // âī¸ Plane - airports
+ return ("a-u-G", "\(googleUUID)/Google/rail.png", "-16711936")
+ // âī¸ Plane - Google airports
case 0x2708: // âī¸
- return ("a-u-G", "\(googleBase)/airports.png", "-16776961")
+ return ("a-u-G", "\(googleUUID)/Google/airports.png", "-16776961")
+ // đ Truck - Google bus
+ case 0x1F69A: // đ
+ return ("a-u-G", "\(googleUUID)/Google/bus.png", "-16711936")
+ // đ Bus - Google bus
+ case 0x1F68C: // đ
+ return ("a-u-G", "\(googleUUID)/Google/bus.png", "-256")
// === PLACES ===
- // đ¨ Hotel - lodging
+ // đ¨ Hotel - Google lodging
case 0x1F3E8: // đ¨
- return ("a-u-G", "\(googleBase)/lodging.png", "-16776961")
- // đĒ Store - convenience
+ return ("a-u-G", "\(googleUUID)/Google/lodging.png", "-16776961")
+ // đĒ Store - Google convenience
case 0x1F3EA: // đĒ
- return ("a-u-G", "\(googleBase)/convenience.png", "-16711936")
- // âŊ Gas - gas_stations
+ return ("a-u-G", "\(googleUUID)/Google/convenience.png", "-16711936")
+ // âŊ Gas - Google gas_stations
case 0x1F6FD: // âŊ
- return ("a-u-G", "\(googleBase)/gas_stations.png", "-16776961")
+ return ("a-u-G", "\(googleUUID)/Google/gas_stations.png", "-16776961")
+ // đ° Castle - Google info
+ case 0x1F3F0: // đ°
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đī¸ Government - Google info
+ case 0x1F3DB: // đī¸
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // ⲠFountain - Generic fountain (use info)
+ case 0x1F6F1: // â˛
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đī¸ Park - Google parks
+ case 0x1F3DE: // đī¸
+ return ("a-u-G", "\(googleUUID)/Google/parks.png", "-16711936")
// === PEOPLE ===
- // đļ Person - hiker
+ // đļ Person - Google hiker
case 0x1F464, 0x1F465, 3: // đ¤ đĨ
- return ("a-u-G", "\(googleBase)/hiker.png", "-16711936")
- // đ Runner - use man
- case 0x1F3C3: // đ
- return ("a-u-G", "\(googleBase)/man.png", "-16711936")
+ return ("a-u-G", "\(googleUUID)/Google/hiker.png", "-16711936")
// === STRUCTURES ===
- // đ House - use homegardenbusiness
+ // đ House - Google homegardenbusiness
case 0x1F3E0, 0x1F3E1, 4: // đ đĄ
- return ("a-u-G", "\(googleBase)/homegardenbusiness.png", "-16711936")
- // âē Tent - campground
+ return ("a-u-G", "\(googleUUID)/Google/homegardenbusiness.png", "-16711936")
+ // âē Tent - Google campground
case 0x26FA, 0x1F3D5, 5: // âē đ
- return ("a-u-G", "\(googleBase)/campground.png", "-256")
- // đ° Castle - use info
- case 0x1F3F0: // đ°
- return ("a-u-G", "\(googleBase)/info.png", "-16776961")
+ return ("a-u-G", "\(googleUUID)/Google/campground.png", "-256")
+ // đī¸ Abandoned - Google info
+ case 0x1F6DA: // đī¸
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đī¸ Construction - Google caution
+ case 0x1F6D7: // đī¸
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-16776961")
+ // đ Factory - Google info
+ case 0x1F3ED: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
- // === NATURE ===
- // đ˛ Tree - parks
+ // === NATURE / TERRAIN ===
+ // đ˛ Tree - Google parks
case 0x1F332: // đ˛
- return ("a-u-G", "\(googleBase)/parks.png", "-16711936")
- // đŗ Tree - parks
+ return ("a-u-G", "\(googleUUID)/Google/parks.png", "-16711936")
+ // đŗ Tree - Google parks
case 0x1F333: // đŗ
- return ("a-u-G", "\(googleBase)/parks.png", "-16711936")
- // đī¸ Mountain - use cross-hairs
+ return ("a-u-G", "\(googleUUID)/Google/parks.png", "-16711936")
+ // đī¸ Mountain - Google cross-hairs
case 0x1F3D4: // đī¸
- return ("a-u-G", "\(googleBase)/cross-hairs.png", "-1")
- // â°ī¸ Mountain - use cross-hairs
+ return ("a-u-G", "\(googleUUID)/Google/cross-hairs.png", "-1")
+ // â°ī¸ Mountain - Google cross-hairs
case 0x26F0: // â°ī¸
- return ("a-u-G", "\(googleBase)/cross-hairs.png", "-1")
- // đ§ Water - water
+ return ("a-u-G", "\(googleUUID)/Google/cross-hairs.png", "-1")
+ // đ§ Water - Google water
case 0x1F4A7: // đ§
- return ("a-u-G", "\(googleBase)/water.png", "-16776961")
- // đ Wave - water
+ return ("a-u-G", "\(googleUUID)/Google/water.png", "-16776961")
+ // đ Wave - Google water
case 0x1F30A: // đ
- return ("a-u-G", "\(googleBase)/water.png", "-16776961")
- // âī¸ Cloud - partly_cloudy
+ return ("a-u-G", "\(googleUUID)/Google/water.png", "-16776961")
+ // âī¸ Cloud - Google partly_cloudy
case 0x2601, 0x2602: // â â
- return ("a-u-G", "\(googleBase)/partly_cloudy.png", "-1")
- // đ Moon - use star
+ return ("a-u-G", "\(googleUUID)/Google/partly_cloudy.png", "-1")
+ // đ Moon - Google star
case 0x1F319: // đ
- return ("a-u-G", "\(googleBase)/star.png", "-16776961")
- // â Anchor - use marina
+ return ("a-u-G", "\(googleUUID)/Google/star.png", "-16776961")
+ // â Anchor - Google marina
case 0x2693: // â
- return ("a-u-G", "\(googleBase)/marina.png", "-16776961")
- // â Star - star
+ return ("a-u-G", "\(googleUUID)/Google/marina.png", "-16776961")
+ // â Star - Google star
case 0x2B50, 0x1F31F: // â đ
- return ("a-u-G", "\(googleBase)/star.png", "-256")
+ return ("a-u-G", "\(googleUUID)/Google/star.png", "-256")
+ // đ Sun - Google sunny
+ case 0x1F31E: // đ
+ return ("a-u-G", "\(googleUUID)/Google/sunny.png", "-256")
// === FLAGS/MARKERS ===
- // đŠ Flag - flag
+ // đŠ Flag - Google flag
case 0x1F6A9: // đŠ
- return ("a-u-G", "\(googleBase)/flag.png", "-16776961")
- // đ Checkered flag - use flag
+ return ("a-u-G", "\(googleUUID)/Google/flag.png", "-16776961")
+ // đ Checkered flag - Google flag
case 0x1F3C1, 7: // đ
- return ("a-u-G", "\(googleBase)/flag.png", "-1")
+ return ("a-u-G", "\(googleUUID)/Google/flag.png", "-1")
+ // đ Flags - Google flag
+ case 0x1F38C: // đ
+ return ("a-u-G", "\(googleUUID)/Google/flag.png", "-16776961")
// === OBJECTS ===
- // đˇ Camera
+ // đˇ Camera - Google camera
case 0x1F4F7: // đˇ
- return ("a-u-G", "\(googleBase)/camera.png", "-16711936")
- // đ Lock - use info
+ return ("a-u-G", "\(googleUUID)/Google/camera.png", "-16711936")
+ // đ Lock - Google info
case 0x1F512: // đ
- return ("a-u-G", "\(googleBase)/info.png", "-16711936")
- // đ Key - use info
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16711936")
+ // đ Key - Google info
case 0x1F511: // đ
- return ("a-u-G", "\(googleBase)/info.png", "-16711936")
- // đĻ Package - use shopping
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16711936")
+ // đĻ Package - Google shopping
case 0x1F4E6: // đĻ
- return ("a-u-G", "\(googleBase)/shopping.png", "-16711936")
- // đ§ Construction - caution
+ return ("a-u-G", "\(googleUUID)/Google/shopping.png", "-16711936")
+ // đ§ Construction - Google caution
case 0x1F6A7: // đ§
- return ("a-u-G", "\(googleBase)/caution.png", "-256")
- // đ¯ Target - target
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-256")
+ // đ¯ Target - Google target
case 0x1F3AF: // đ¯
- return ("a-u-G", "\(googleBase)/target.png", "-16776961")
- // đš Sports bow - use target
+ return ("a-u-G", "\(googleUUID)/Google/target.png", "-16776961")
+ // đš Sports bow - Google target
case 0x1F3F9: // đš
- return ("a-u-G", "\(googleBase)/target.png", "-16776961")
- // đŖ Bomb - use caution
- case 0x1F4A3: // đŖ
- return ("a-u-G", "\(googleBase)/caution.png", "-16776961")
- // đ§ Wrench - use mechanic
+ return ("a-u-G", "\(googleUUID)/Google/target.png", "-16776961")
+ // đ§ Wrench - Google mechanic
case 0x1F527: // đ§
- return ("a-u-G", "\(googleBase)/mechanic.png", "-16711936")
- // đ ī¸ Tools - use mechanic
+ return ("a-u-G", "\(googleUUID)/Google/mechanic.png", "-16711936")
+ // đ ī¸ Tools - Google mechanic
case 0x1F6E0: // đ ī¸
- return ("a-u-G", "\(googleBase)/mechanic.png", "-16711936")
- // đŽ Post box - post_office
+ return ("a-u-G", "\(googleUUID)/Google/mechanic.png", "-16711936")
+ // đŽ Post box - Google post_office
case 0x1F4EE: // đŽ
- return ("a-u-G", "\(googleBase)/post_office.png", "-16776961")
- // đ Gem - use star
+ return ("a-u-G", "\(googleUUID)/Google/post_office.png", "-16776961")
+ // đ Gem - Google star
case 0x1F48E: // đ
- return ("a-u-G", "\(googleBase)/star.png", "-16776961")
- // đ Bell - use info
+ return ("a-u-G", "\(googleUUID)/Google/star.png", "-16776961")
+ // đ Bell - Google info
case 0x1F514: // đ
- return ("a-u-G", "\(googleBase)/info.png", "-256")
- // đē Map - use marker
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-256")
+ // đē Map - Generic placemark_circle
case 0x1F5FA: // đē
- return ("a-u-G", "\(googleBase)/placemark_circle.png", "-1")
- // đ Gift - use shopping
+ return ("a-u-G", "\(genericUUID)/Shapes/placemark_circle.png", "-1")
+ // đ Gift - Google shopping
case 0x1F381: // đ
- return ("a-u-G", "\(googleBase)/shopping.png", "-16776961")
- // đ Skull - use caution
- case 0x1F480: // đ
- return ("a-u-G", "\(googleBase)/caution.png", "-1")
- // âī¸ Snowflake - snowflake_simple
+ return ("a-u-G", "\(googleUUID)/Google/shopping.png", "-16776961")
+ // âī¸ Snowflake - Google snowflake_simple
case 0x2744: // â
- return ("a-u-G", "\(googleBase)/snowflake_simple.png", "-1")
- // âī¸ Umbrella - use sunny
+ return ("a-u-G", "\(googleUUID)/Google/snowflake_simple.png", "-1")
+ // âī¸ Umbrella - Google sunny
case 0x26F1: // âą
- return ("a-u-G", "\(googleBase)/sunny.png", "-16776961")
- // đĄ Light - use info
+ return ("a-u-G", "\(googleUUID)/Google/sunny.png", "-16776961")
+ // đĄ Light - Google info-i
case 0x1F4A1: // đĄ
- return ("a-u-G", "\(googleBase)/info-i.png", "-256")
- // đ Battery - use bars
+ return ("a-u-G", "\(googleUUID)/Google/info-i.png", "-256")
+ // đ Battery - Google bars
case 0x1F50B: // đ
- return ("a-u-G", "\(googleBase)/bars.png", "-16711936")
- // đģ Radio - radio
+ return ("a-u-G", "\(googleUUID)/Google/bars.png", "-16711936")
+ // đģ Radio - Google radio
case 0x1F4FB: // đģ
- return ("a-u-G", "\(googleBase)/radio.png", "-16711936")
- // đ Phone - phone
+ return ("a-u-G", "\(googleUUID)/Google/radio.png", "-16711936")
+ // đ Phone - Google phone
case 0x1F4DE, 0x1F4F1: // đ đą
- return ("a-u-G", "\(googleBase)/phone.png", "-16711936")
- // đĨ Collision - caution
+ return ("a-u-G", "\(googleUUID)/Google/phone.png", "-16711936")
+ // đĨ Collision - Google caution
case 0x1F4A5: // đĨ
- return ("a-u-G", "\(googleBase)/caution.png", "-16776961")
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-16776961")
+ // đĻ Flashlight - Google sunny
+ case 0x1F526: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/sunny.png", "-16711936")
+ // đ¯ī¸ Candle - Google sunny
+ case 0x1F56F: // đ¯ī¸
+ return ("a-u-G", "\(googleUUID)/Google/sunny.png", "-16776961")
+ // đē TV - Google camera
+ case 0x1F4FA: // đē
+ return ("a-u-G", "\(googleUUID)/Google/camera.png", "-16711936")
+ // đž Disk - Google info
+ case 0x1F4BE: // đž
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16711936")
+ // đ DVD - Google info
+ case 0x1F4C0: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĨī¸ Computer - Google info
+ case 0x1F5A5: // đĨī¸
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16711936")
+ // â¨ī¸ Keyboard - Google info
+ case 0x1F5A8: // â¨ī¸
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16711936")
+ // đąī¸ Mouse - Google info
+ case 0x1F5B1: // đąī¸
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16711936")
// === SYMBOLS ===
- // â¤ī¸ Heart - use flag
+ // â¤ī¸ Heart - Google flag
case 0x2764, 0x1F493, 0x1F49A, 0x1F499: // â¤ī¸ đ đ đ
- return ("a-u-G", "\(googleBase)/flag.png", "-16776961")
- // â
Check - use star
+ return ("a-u-G", "\(googleUUID)/Google/flag.png", "-16776961")
+ // â
Check - Google star
case 0x2705, 0x1F7E2: // â
đĸ
- return ("a-u-G", "\(googleBase)/star.png", "-16711936")
- // â X - use caution
+ return ("a-u-G", "\(googleUUID)/Google/star.png", "-16711936")
+ // â X - Google caution
case 0x274C, 0x1F6AB: // â đĢ
- return ("a-u-G", "\(googleBase)/caution.png", "-16776961")
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-16776961")
+ // â° Curly loop - Google trail
+ case 0x1F0: // â°
+ return ("a-u-G", "\(googleUUID)/Google/trail.png", "-16776961")
+ // âŋ Double curly loop - Google trail
+ case 0x1F1F: // âŋ
+ return ("a-u-G", "\(googleUUID)/Google/trail.png", "-16776961")
// === WEATHER ===
- // đ¤ī¸ Sun behind cloud - partlycloudy
+ // đ¤ī¸ Sun behind cloud - Google partly_cloudy
case 0x1F324: // đ¤ī¸
- return ("a-u-G", "\(googleBase)/partly_cloudy.png", "-256")
- // đ§ī¸ Rain - rainy
+ return ("a-u-G", "\(googleUUID)/Google/partly_cloudy.png", "-256")
+ // đ§ī¸ Rain - Google rainy
case 0x1F327: // đ§ī¸
- return ("a-u-G", "\(googleBase)/rainy.png", "-16776961")
- // đ¨ī¸ Snow - use snowflake
+ return ("a-u-G", "\(googleUUID)/Google/rainy.png", "-16776961")
+ // đ¨ī¸ Snow - Google snowflake_simple
case 0x1F328: // đ¨ī¸
- return ("a-u-G", "\(googleBase)/snowflake_simple.png", "-1")
- // đŠī¸ Lightning - use caution
+ return ("a-u-G", "\(googleUUID)/Google/snowflake_simple.png", "-1")
+ // đŠī¸ Lightning - Google caution
case 0x1F329: // đŠ
- return ("a-u-G", "\(googleBase)/caution.png", "-256")
- // đ Cyclone - use windy
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-256")
+ // đ Cyclone - Google sunny
case 0x1F300: // đ
- return ("a-u-G", "\(googleBase)/sunny.png", "-16776961")
- // đ Rainbow - use star
+ return ("a-u-G", "\(googleUUID)/Google/sunny.png", "-16776961")
+ // đ Rainbow - Google star
case 0x1F308: // đ
- return ("a-u-G", "\(googleBase)/star.png", "-16776961")
- // đĒī¸ Tornado - use caution
+ return ("a-u-G", "\(googleUUID)/Google/star.png", "-16776961")
+ // đĒī¸ Tornado - Google caution
case 0x1F32A: // đĒī¸
- return ("a-u-G", "\(googleBase)/caution.png", "-1")
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-1")
+ // đ Volcano - Google volcano
+ case 0x1F30B: // đ
+ return ("a-u-G", "\(googleUUID)/Google/volcano.png", "-16776961")
+ // đī¸ Desert - Google parks
+ case 0x1F3DC: // đī¸
+ return ("a-u-G", "\(googleUUID)/Google/parks.png", "-16776961")
+ // đĢī¸ Fog - Google partly_cloudy
+ case 0x1F32B: // đĢī¸
+ return ("a-u-G", "\(googleUUID)/Google/partly_cloudy.png", "-16776961")
+ // đŦī¸ Wind - Google partly_cloudy
+ case 0x1F32C: // đŦī¸
+ return ("a-u-G", "\(googleUUID)/Google/partly_cloudy.png", "-16711936")
// === GLOBE ===
- // đ Globe - use marker
+ // đ Globe - Generic placemark_circle
case 0x1F30D, 0x1F30E, 0x1F30F, 0x1F310: // đ đ đ đ
- return ("a-u-G", "\(googleBase)/placemark_circle.png", "-16776961")
+ return ("a-u-G", "\(genericUUID)/Shapes/placemark_circle.png", "-16776961")
+ // đēī¸ Map - Generic placemark_square
+ case 0x1F5FA: // đē
+ return ("a-u-G", "\(genericUUID)/Shapes/placemark_square.png", "-16776961")
+ // đ§ Compass - Generic compass (use trail)
+ case 0x1F6AD: // đ§
+ return ("a-u-G", "\(googleUUID)/Google/trail.png", "-16776961")
// === FOOD ===
- // đ Burger - dining
+ // đ Burger - Google dining
case 0x1F354: // đ
- return ("a-u-G", "\(googleBase)/dining.png", "-256")
- // đ Pizza - dining
+ return ("a-u-G", "\(googleUUID)/Google/dining.png", "-256")
+ // đ Pizza - Google dining
case 0x1F355: // đ
- return ("a-u-G", "\(googleBase)/dining.png", "-256")
- // â Coffee - coffee
+ return ("a-u-G", "\(googleUUID)/Google/dining.png", "-256")
+ // â Coffee - Google coffee
case 0x2615: // â
- return ("a-u-G", "\(googleBase)/coffee.png", "-256")
- // đē Beer - bars
+ return ("a-u-G", "\(googleUUID)/Google/coffee.png", "-256")
+ // đē Beer - Google bars
case 0x1F37A: // đē
- return ("a-u-G", "\(googleBase)/bars.png", "-256")
- // đˇ Wine - use bar
+ return ("a-u-G", "\(googleUUID)/Google/bars.png", "-256")
+ // đˇ Wine - Google bars
case 0x1F377: // đˇ
- return ("a-u-G", "\(googleBase)/bars.png", "-65281")
+ return ("a-u-G", "\(googleUUID)/Google/bars.png", "-65281")
+ // đĨ Salad - Google dining
+ case 0x1F957: // đĨ
+ return ("a-u-G", "\(googleUUID)/Google/dining.png", "-16711936")
+ // đŋ Popcorn - Google movies
+ case 0x1F37F: // đŋ
+ return ("a-u-G", "\(googleUUID)/Google/movies.png", "-16776961")
+ // đŠ Donut - Google donut
+ case 0x1F369: // đŠ
+ return ("a-u-G", "\(googleUUID)/Google/donut.png", "-16776961")
+ // đĒ Cookie - Google donut
+ case 0x1F36A: // đĒ
+ return ("a-u-G", "\(googleUUID)/Google/donut.png", "-16776961")
+ // đĢ Chocolate - Google donut
+ case 0x1F36B: // đĢ
+ return ("a-u-G", "\(googleUUID)/Google/donut.png", "-16776961")
+ // đŦ Candy - Google donut
+ case 0x1F36C: // đŦ
+ return ("a-u-G", "\(googleUUID)/Google/donut.png", "-16776961")
+ // đ Lollipop - Google donut
+ case 0x1F36D: // đ
+ return ("a-u-G", "\(googleUUID)/Google/donut.png", "-16776961")
+ // đĻ Ice Cream - Google donut
+ case 0x1F368: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/donut.png", "-16776961")
+ // đĨ¤ Cup - Google coffee
+ case 0x1F964: // đĨ¤
+ return ("a-u-G", "\(googleUUID)/Google/coffee.png", "-16776961")
+ // đĩ Tea - Google coffee
+ case 0x1F375: // đĩ
+ return ("a-u-G", "\(googleUUID)/Google/coffee.png", "-16711936")
+ // đĨ Whiskey - Google bars
+ case 0x1F943: // đĨ
+ return ("a-u-G", "\(googleUUID)/Google/bars.png", "-16776961")
+ // đĨ Cheers - Google bars
+ case 0x1F942: // đĨ
+ return ("a-u-G", "\(googleUUID)/Google/bars.png", "-16776961")
+ // đž Bottle - Google bars
+ case 0x1F37E: // đž
+ return ("a-u-G", "\(googleUUID)/Google/bars.png", "-16776961")
// === RECREATION ===
- // đŖ Fishing
+ // đŖ Fishing - Google fishing
case 0x1F3A3: // đŖ
- return ("a-u-G", "\(googleBase)/fishing.png", "-16776961")
- // âŗ Golf
+ return ("a-u-G", "\(googleUUID)/Google/fishing.png", "-16776961")
+ // âŗ Golf - Google golf
case 0x1F3CC: // âŗ
- return ("a-u-G", "\(googleBase)/golf.png", "-16711936")
- // âˇī¸ Ski
+ return ("a-u-G", "\(googleUUID)/Google/golf.png", "-16711936")
+ // âˇī¸ Ski - Google ski
case 0x1F3BF: // âˇī¸
- return ("a-u-G", "\(googleBase)/ski.png", "-16711936")
- // đ Swimming
+ return ("a-u-G", "\(googleUUID)/Google/ski.png", "-16711936")
+ // đ Swimming - Google swimming
case 0x1F3CA: // đ
- return ("a-u-G", "\(googleBase)/swimming.png", "-16776961")
- // đ Surfing
+ return ("a-u-G", "\(googleUUID)/Google/swimming.png", "-16776961")
+ // đ Surfing - Google swimming
case 0x1F3C4: // đ
- return ("a-u-G", "\(googleBase)/swimming.png", "-16776961")
- // đŖ Fish - fishing
+ return ("a-u-G", "\(googleUUID)/Google/swimming.png", "-16776961")
+ // đ Fish - Google fishing
case 0x1F41F: // đ
- return ("a-u-G", "\(googleBase)/fishing.png", "-16776961")
- // đž Rice - farm
+ return ("a-u-G", "\(googleUUID)/Google/fishing.png", "-16776961")
+ // đž Farm - Google parks
case 0x1F33E: // đž
- return ("a-u-G", "\(googleBase)/golf.png", "-16711936")
- // đ Farm animal - use golf
+ return ("a-u-G", "\(googleUUID)/Google/parks.png", "-16711936")
+ // đ Farm Animal - Google parks
case 0x1F404: // đ
- return ("a-u-G", "\(googleBase)/golf.png", "-16711936")
+ return ("a-u-G", "\(googleUUID)/Google/parks.png", "-16711936")
+ // đ Dog - Google hiker
+ case 0x1F415: // đ
+ return ("a-u-G", "\(googleUUID)/Google/hiker.png", "-16711936")
+ // đ Cat - Google hiker
+ case 0x1F431: // đ
+ return ("a-u-G", "\(googleUUID)/Google/hiker.png", "-16711936")
+ // đ Rooster - Google info
+ case 0x1F413: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ
Eagle - Google info
+ case 0x1F425: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Butterfly - Google info
+ case 0x1F98B: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Bee - Google info
+ case 0x1F41D: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Beetle - Google info
+ case 0x1F41E: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Crab - Google fishing
+ case 0x1F980: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/fishing.png", "-16776961")
+ // đĻ Lobster - Google fishing
+ case 0x1F99E: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/fishing.png", "-16776961")
+ // đ Shell - Google fishing
+ case 0x1F41A: // đ
+ return ("a-u-G", "\(googleUUID)/Google/fishing.png", "-16776961")
+ // đ Octopus - Google fishing
+ case 0x1F419: // đ
+ return ("a-u-G", "\(googleUUID)/Google/fishing.png", "-16776961")
+ // đĻ Squid - Google fishing
+ case 0x1F991: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/fishing.png", "-16776961")
+ // đ Snail - Google info
+ case 0x1F98C: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Lizard - Google info
+ case 0x1F98E: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Snake - Google info
+ case 0x1F40D: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ T-Rex - Google info
+ case 0x1F996: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Sauropod - Google info
+ case 0x1F995: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Shark - Google fishing
+ case 0x1F988: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/fishing.png", "-16776961")
+ // đŗ Whale - Google water
+ case 0x1F433: // đŗ
+ return ("a-u-G", "\(googleUUID)/Google/water.png", "-16776961")
+ // đŦ Dolphin - Google water
+ case 0x1F42C: // đŦ
+ return ("a-u-G", "\(googleUUID)/Google/water.png", "-16776961")
+ // đ Crocodile - Google water
+ case 0x1F40A: // đ
+ return ("a-u-G", "\(googleUUID)/Google/water.png", "-16776961")
+ // đ Leopard - Google info
+ case 0x1F406: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ
Tiger - Google info
+ case 0x1F405: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Buffalo - Google info
+ case 0x1F403: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Ox - Google info
+ case 0x1F402: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Horse - Google info
+ case 0x1F434: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Ram - Google info
+ case 0x1F40F: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Sheep - Google info
+ case 0x1F411: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Goat - Google info
+ case 0x1F410: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Llama - Google info
+ case 0x1F999: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đâđĻē Service Dog - Google hiker
+ case 0x1F9BA: // đâđĻē
+ return ("a-u-G", "\(googleUUID)/Google/hiker.png", "-16776961")
+ // đŠ Poodle - Google hiker
+ case 0x1F429: // đŠ
+ return ("a-u-G", "\(googleUUID)/Google/hiker.png", "-16776961")
+ // đââŦ Black Cat - Google hiker
+ case 0x1F408: // đââŦ
+ return ("a-u-G", "\(googleUUID)/Google/hiker.png", "-16776961")
+ // đĻ Raccoon - Google info
+ case 0x1F99D: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Fox - Google info
+ case 0x1F98A: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đģ Bear - Google info
+ case 0x1F43B: // đģ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đŧ Panda - Google info
+ case 0x1F43C: // đŧ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ¨ Koala - Google info
+ case 0x1F428: // đ¨
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ¯ Tiger - Google info
+ case 0x1F42F: // đ¯
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Lion - Google info
+ case 0x1F981: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đŽ Cow - Google info
+ case 0x1F42E: // đŽ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đˇ Pig - Google info
+ case 0x1F437: // đˇ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Pig (big) - Google info
+ case 0x1F416: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Boar - Google info
+ case 0x1F417: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Elephant - Google info
+ case 0x1F418: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Rhino - Google info
+ case 0x1F98F: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Hippo - Google info
+ case 0x1F99B: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Giraffe - Google info
+ case 0x1F992: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻŦ Bison - Google info
+ case 0x1F9AC: // đĻŦ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻŖ Mammoth - Google info
+ case 0x1F9A3: // đĻŖ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Deer - Google info
+ case 0x1F98C: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĻ Moose - Google info
+ case 0x1F98D: // đĻ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+
+ // === INFRASTRUCTURE ===
+ // đŠ Checkpoint - Google flag
+ case 0x1F6A6: // đŠ
+ return ("a-u-G", "\(googleUUID)/Google/flag.png", "-16776961")
+ // â No Entry - Google caution
+ case 0x1F6D1: // â
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-16776961")
+ // đ Stop - Google caution
+ case 0x1F6D1: // đ
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-16776961")
+ // đī¸ Base Camp - Google campground
+ case 0x1F6D1: // đī¸
+ return ("a-u-G", "\(googleUUID)/Google/campground.png", "-16776961")
+ // đĸ Office Building - Google homegardenbusiness
+ case 0x1F3E2: // đĸ
+ return ("a-u-G", "\(googleUUID)/Google/homegardenbusiness.png", "-16776961")
+ // đŦ Bank - Google info
+ case 0x1F3E6: // đŦ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đĨ Hospital - Google hospitals
+ case 0x1F3E5: // đĨ
+ return ("a-u-G", "\(googleUUID)/Google/hospitals.png", "-16776961")
+ // đ¨ Hotel - Google lodging
+ case 0x1F3E8: // đ¨
+ return ("a-u-G", "\(googleUUID)/Google/lodging.png", "-16776961")
+ // đŠ Love Hotel - Google lodging
+ case 0x1F3E9: // đŠ
+ return ("a-u-G", "\(googleUUID)/Google/lodging.png", "-16776961")
+ // đ¤ī¸ Railway - Google rail
+ case 0x1F6E2: // đ¤ī¸
+ return ("a-u-G", "\(googleUUID)/Google/rail.png", "-16711936")
+ // đŖī¸ Motorway - Google info
+ case 0x1F6E3: // đŖī¸
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // âŊ Fuel Pump - Google gas_stations
+ case 0x1F6FD: // âŊ
+ return ("a-u-G", "\(googleUUID)/Google/gas_stations.png", "-16776961")
+ // đ Trolleybus - Google bus
+ case 0x1F68E: // đ
+ return ("a-u-G", "\(googleUUID)/Google/bus.png", "-16776961")
+ // đ Metro - Google rail
+ case 0x1F688: // đ
+ return ("a-u-G", "\(googleUUID)/Google/rail.png", "-16711936")
+ // đ Tram - Google tram
+ case 0x1F68A: // đ
+ return ("a-u-G", "\(googleUUID)/Google/tram.png", "-16776961")
+ // đ Station - Google rail
+ case 0x1F689: // đ
+ return ("a-u-G", "\(googleUUID)/Google/rail.png", "-16776961")
+ // đ Custom - Google info
+ case 0x1F6C3: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ Passport control - Google info
+ case 0x1F6C2: // đ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đŽ Litter - Google info
+ case 0x1F6AE: // đŽ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16711936")
+ // đ° Water - Google water
+ case 0x1F6B0: // đ°
+ return ("a-u-G", "\(googleUUID)/Google/water.png", "-16776961")
+ // đą Non-potable - Google caution
+ case 0x1F6B1: // đą
+ return ("a-u-G", "\(googleUUID)/Google/caution.png", "-16776961")
+ // âŋ Wheelchair - Google wheel_chair_accessible
+ case 0x267F: // âŋ
+ return ("a-u-G", "\(googleUUID)/Google/wheel_chair_accessible.png", "-16711936")
+ // đģ Bathroom - Google info
+ case 0x1F6BB: // đģ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16711936")
+ // đš Men's - Google info
+ case 0x1F6B9: // đš
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đē Women's - Google info
+ case 0x1F6BA: // đē
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đŧ Baby - Google info
+ case 0x1F6BC: // đŧ
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đž Loo - Google info
+ case 0x1F6BE: // đž
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16776961")
+ // đ
ŋī¸ Parking - Google info
+ case 0x1F17F: // đ
ŋī¸
+ return ("a-u-G", "\(googleUUID)/Google/info.png", "-16711936")
// === Default - RED pushpin ===
default:
- return ("a-u-G", "\(googleBase)/red-pushpin.png", "-16776961")
+ return ("a-u-G", "\(genericUUID)/Tacks/red-pushpin.png", "-16776961")
}
}
}
\ No newline at end of file