aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2022-01-30 00:11:52 -0600
committerIván Ávalos <avalos@disroot.org>2022-01-30 00:11:52 -0600
commit2c44e13653e0162d66ac6665426a74cc816f962f (patch)
tree30b838af8a65596edb60bb0d0d8f67d375591b46
parent169ee2da62663f8b5b686ede570d918dbbf00b9b (diff)
downloadetbsa-trackermap-mobile-2c44e13653e0162d66ac6665426a74cc816f962f.tar.gz
etbsa-trackermap-mobile-2c44e13653e0162d66ac6665426a74cc816f962f.tar.bz2
etbsa-trackermap-mobile-2c44e13653e0162d66ac6665426a74cc816f962f.zip
Added device icon and actions to DeviceRow
-rw-r--r--iosApp/Localizable.strings5
-rw-r--r--iosApp/iosApp.xcodeproj/project.pbxproj6
-rw-r--r--iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstatebin47814 -> 47744 bytes
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapAnimal.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapAnimal.imageset/animal.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapArrow.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapArrow.imageset/arrow.svg4
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapBicycle.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapBicycle.imageset/bicycle.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapBoat.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapBoat.imageset/boat.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapBus.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapBus.imageset/bus.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapCar.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapCar.imageset/car.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapCrane.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapCrane.imageset/crane.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapDefault.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapDefault.imageset/default.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapHelicopter.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapHelicopter.imageset/helicopter.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapMotorcycle.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapMotorcycle.imageset/motorcycle.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapOffroad.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapOffroad.imageset/offroad.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapPerson.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapPerson.imageset/person.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapPickup.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapPickup.imageset/pickup.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapPlane.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapPlane.imageset/plane.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapScooter.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapScooter.imageset/scooter.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapShip.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapShip.imageset/ship.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTractor.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTractor.imageset/tractor.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTrain.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTrain.imageset/train.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTram.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTram.imageset/tram.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTrolleybus.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTrolleybus.imageset/trolleybus.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTruck.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapTruck.imageset/truck.svg7
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapVan.imageset/Contents.json21
-rw-r--r--iosApp/iosApp/Assets.xcassets/MapVan.imageset/van.svg7
-rw-r--r--iosApp/iosApp/Devices/DeviceRow.swift190
-rw-r--r--iosApp/iosApp/Devices/DevicesView.swift16
-rw-r--r--iosApp/iosApp/Shared/MarkerTransformations.swift40
50 files changed, 793 insertions, 77 deletions
diff --git a/iosApp/Localizable.strings b/iosApp/Localizable.strings
index aee6a31..30f2ac8 100644
--- a/iosApp/Localizable.strings
+++ b/iosApp/Localizable.strings
@@ -16,3 +16,8 @@
"devices" = "Devices";
"map" = "Map";
"search" = "Search";
+
+"details" = "Details";
+"reports" = "Reports";
+"commands" = "Commands";
+"select-action" = "Select an action";
diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj
index 6eeaa69..a0d5793 100644
--- a/iosApp/iosApp.xcodeproj/project.pbxproj
+++ b/iosApp/iosApp.xcodeproj/project.pbxproj
@@ -14,6 +14,7 @@
E33A236027A4FD2C00DD647F /* MapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E33A235F27A4FD2C00DD647F /* MapView.swift */; };
E33A236327A5014600DD647F /* SwiftUIX in Frameworks */ = {isa = PBXBuildFile; productRef = E33A236227A5014600DD647F /* SwiftUIX */; };
E33A236527A530F300DD647F /* SmallLabelStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E33A236427A530F300DD647F /* SmallLabelStyle.swift */; };
+ E33A236727A64E4500DD647F /* MarkerTransformations.swift in Sources */ = {isa = PBXBuildFile; fileRef = E33A236627A64E4500DD647F /* MarkerTransformations.swift */; };
E38F241527A242870069FC45 /* Inject.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38F241427A242870069FC45 /* Inject.swift */; };
E38F241727A242C70069FC45 /* Resolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38F241627A242C70069FC45 /* Resolver.swift */; };
E38F241C27A26DD70069FC45 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38F241B27A26DD70069FC45 /* RootViewModel.swift */; };
@@ -35,7 +36,7 @@
7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
E33A235F27A4FD2C00DD647F /* MapView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapView.swift; sourceTree = "<group>"; };
E33A236427A530F300DD647F /* SmallLabelStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SmallLabelStyle.swift; sourceTree = "<group>"; };
- E37361C827A39A4200306B21 /* WhirlyGlobeMaplyComponent.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WhirlyGlobeMaplyComponent.framework; sourceTree = "<group>"; };
+ E33A236627A64E4500DD647F /* MarkerTransformations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkerTransformations.swift; sourceTree = "<group>"; };
E38F241427A242870069FC45 /* Inject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Inject.swift; sourceTree = "<group>"; };
E38F241627A242C70069FC45 /* Resolver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Resolver.swift; sourceTree = "<group>"; };
E38F241B27A26DD70069FC45 /* RootViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootViewModel.swift; sourceTree = "<group>"; };
@@ -105,7 +106,6 @@
7555FFB0242A642200829871 /* Frameworks */ = {
isa = PBXGroup;
children = (
- E37361C827A39A4200306B21 /* WhirlyGlobeMaplyComponent.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -153,6 +153,7 @@
E38F241627A242C70069FC45 /* Resolver.swift */,
E38F241F27A27B550069FC45 /* LoadingView.swift */,
E33A236427A530F300DD647F /* SmallLabelStyle.swift */,
+ E33A236627A64E4500DD647F /* MarkerTransformations.swift */,
);
path = Shared;
sourceTree = "<group>";
@@ -258,6 +259,7 @@
files = (
E38F241727A242C70069FC45 /* Resolver.swift in Sources */,
E33A236027A4FD2C00DD647F /* MapView.swift in Sources */,
+ E33A236727A64E4500DD647F /* MarkerTransformations.swift in Sources */,
E38F241527A242870069FC45 /* Inject.swift in Sources */,
E39ABC4827A4EDEC00965D05 /* DeviceRow.swift in Sources */,
E38F241C27A26DD70069FC45 /* RootViewModel.swift in Sources */,
diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstate b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstate
index 821a1e3..95d87bd 100644
--- a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/avalos.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/iosApp/iosApp/Assets.xcassets/MapAnimal.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapAnimal.imageset/Contents.json
new file mode 100644
index 0000000..52185f2
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapAnimal.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "animal.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapAnimal.imageset/animal.svg b/iosApp/iosApp/Assets.xcassets/MapAnimal.imageset/animal.svg
new file mode 100644
index 0000000..a077029
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapAnimal.imageset/animal.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m19.525 15.802q0 0.5865-0.17372 1.1144-0.17372 0.51808-0.57602 0.8993t-0.96004 0.38122q-0.69489 0-1.2618-0.55718-0.56688-0.56695-0.84118-1.3294t-0.2743-1.476q0-0.5865 0.17372-1.1046 0.17372-0.52785 0.57602-0.90908 0.4023-0.38122 0.96004-0.38122 0.70403 0 1.2618 0.56695 0.56688 0.55718 0.84118 1.3196 0.2743 0.75268 0.2743 1.476zm-3.127 4.7213q0 0.782-0.38402 1.3587-0.38402 0.57672-1.088 0.57672-0.69489 0-1.2983-0.53763-0.59431-0.5474-0.91432-1.3099-0.32001-0.76245-0.32001-1.4858 0-0.782 0.38402-1.3587 0.38402-0.5865 1.088-0.5865 0.69488 0 1.2892 0.5474 0.60345 0.53763 0.92347 1.3099 0.32001 0.76245 0.32001 1.4858zm3.602-0.264q1.0789 0 2.3315 0.95795 1.2526 0.94818 2.0938 2.3167 0.84118 1.3587 0.84118 2.4829 0 0.44965-0.15544 0.7429-0.15544 0.30302-0.44802 0.43988-0.28344 0.14662-0.58517 0.1955-0.30173 0.05865-0.69489 0.05865-0.62174 0-1.7189-0.43988-1.088-0.44-1.664-0.44-0.60345 0-1.7646 0.4301-1.152 0.43988-1.8286 0.43988-1.6732 0-1.6732-1.4272 0-0.84065 0.51202-1.867 0.51202-1.0362 1.2709-1.8866 0.76803-0.85043 1.7189-1.4272 0.951-0.577 1.765-0.577zm2.1852-2.0625q-0.55774 0-0.96004-0.38122t-0.57602-0.8993q-0.17372-0.52785-0.17372-1.1144 0-0.72335 0.2743-1.476 0.2743-0.76245 0.83204-1.3196 0.56688-0.56695 1.2709-0.56695 0.55774 0 0.96004 0.38122t0.57602 0.90908q0.17372 0.51808 0.17372 1.1046 0 0.71358-0.2743 1.476-0.2743 0.76245-0.84118 1.3294-0.56688 0.55718-1.2618 0.55718zm3.9499-1.0166q0.70403 0 1.088 0.5865 0.38402 0.57673 0.38402 1.3587 0 0.72335-0.32001 1.4858t-0.92347 1.3099q-0.59431 0.53763-1.2892 0.53763-0.70403 0-1.088-0.57672-0.38402-0.57673-0.38402-1.3587 0-0.72335 0.32001-1.4858 0.32001-0.77222 0.91432-1.3099 0.60345-0.5474 1.2983-0.5474z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapArrow.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapArrow.imageset/Contents.json
new file mode 100644
index 0000000..58372bf
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapArrow.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "arrow.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapArrow.imageset/arrow.svg b/iosApp/iosApp/Assets.xcassets/MapArrow.imageset/arrow.svg
new file mode 100644
index 0000000..1aed6e0
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapArrow.imageset/arrow.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg3369" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="26" viewBox="0 0 26 26" width="26" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <polygon id="arrow" stroke="#000" points="19 22 13 19 7 22 13 4" stroke-width="1px" fill="#008000"/>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapBicycle.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapBicycle.imageset/Contents.json
new file mode 100644
index 0000000..c2c34bb
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapBicycle.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "bicycle.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapBicycle.imageset/bicycle.svg b/iosApp/iosApp/Assets.xcassets/MapBicycle.imageset/bicycle.svg
new file mode 100644
index 0000000..4eb82ea
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapBicycle.imageset/bicycle.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m16.793 22.105h-2.5821q-0.32893 0-0.47695-0.28781-0.1398-0.28782 0.05757-0.55096l1.546-2.064q-0.53451-0.25492-1.1266-0.25492-1.0855 0-1.8585 0.77299-0.77299 0.77299-0.77299 1.8585t0.77299 1.8585q0.77299 0.77299 1.8585 0.77299 0.94568 0 1.6693-0.59208 0.72365-0.6003 0.91278-1.5131zm-1.5295-1.0526h1.5295q-0.14802-0.69898-0.61674-1.217l-0.91278 1.217zm3.9472 0 2.3683-3.1577h-3.9472l-0.8141 1.0855q0.86344 0.847 1.0361 2.0723h1.3568zm8.4371 2.3848q0.77299-0.77299 0.77299-1.8585t-0.77299-1.8585q-0.77299-0.77299-1.8585-0.77299-0.4934 0-0.99502 0.19736l1.4308 2.1381q0.12335 0.18914 0.08224 0.40294-0.04112 0.2138-0.22203 0.32893-0.12335 0.09046-0.29604 0.09046-0.28781 0-0.43583-0.23847l-1.4308-2.1381q-0.76476 0.78121-0.76476 1.8502 0 1.0855 0.77299 1.8585 0.77299 0.77299 1.8585 0.77299t1.8585-0.77299zm0.74009-4.457q1.0855 1.0772 1.0855 2.5986 0 1.5213-1.0855 2.6068-1.0772 1.0772-2.5986 1.0772-1.5213 0-2.6068-1.0772-1.0772-1.0855-1.0772-2.6068 0-0.79766 0.32071-1.5049 0.32893-0.71542 0.90456-1.2335l-0.53451-0.80588-2.9028 3.8567q-0.14802 0.2138-0.41939 0.2138h-1.62q-0.18914 1.3486-1.2253 2.2532-1.0361 0.90456-2.4176 0.90456-1.5213 0-2.6068-1.0772-1.0772-1.0855-1.0772-2.6068t1.0772-2.5986q1.0855-1.0855 2.6068-1.0855 0.93745 0 1.768 0.45228l1.1266-1.5049h-1.842q-0.21381 0-0.37005-0.15624t-0.15624-0.37005q0-0.2138 0.15624-0.37005 0.15624-0.15624 0.37005-0.15624h3.1577v1.0526h3.5771l-0.69898-1.0526h-1.8256q-0.21381 0-0.37005-0.15624t-0.15624-0.37005 0.15624-0.37005 0.37005-0.15624h2.1052q0.27137 0 0.43583 0.23025l2.1956 3.2893q0.74832-0.36182 1.5789-0.36182 1.5213 0 2.5986 1.0855z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapBoat.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapBoat.imageset/Contents.json
new file mode 100644
index 0000000..7638406
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapBoat.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "boat.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapBoat.imageset/boat.svg b/iosApp/iosApp/Assets.xcassets/MapBoat.imageset/boat.svg
new file mode 100644
index 0000000..f1620ca
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapBoat.imageset/boat.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816-1.1309 3.3906a12.374 12.374 0 0 1 1.1309 -0.0625 12.374 12.374 0 0 1 1.1289 0.056641l-1.129-3.3847zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" stroke-width=".78953" d="m20 11.146c-2.1317 5.5267-6.3162 6.785-6.3162 6.785l6.316 1.9v-8.685zm0 8.6848h-6.711v0.64149c0 0.93043 0.77808 1.7633 1.8011 2.3686-0.36215 0.12387-0.72989 0.14804-1.0116 0.14804-0.55267 0-1.4212-0.15791-1.9738-0.78953v1.5791c0.55267 0.63162 1.4212 0.78953 1.9738 0.78953 0.55267 0 1.4212-0.15791 1.9738-0.78953 0.55267 0.63162 1.4212 0.78953 1.9738 0.78953 0.55267 0 1.4212-0.15791 1.9738-0.78953 0.55267 0.63162 1.4212 0.78953 1.9738 0.78953 0.55267 0 1.4212-0.15791 1.9738-0.78953 0.55267 0.63162 1.4212 0.78953 1.9738 0.78953 0.55267 0 1.4212-0.15791 1.9738-0.78953v-1.5791c-0.55267 0.63162-1.4212 0.78953-1.9738 0.78953-0.39586 0-0.94322-0.09201-1.431-0.37009 1.0794-0.59227 2.1544-1.4653 2.9361-2.788h-2.6893-4.7372zm4.7372 0s0.0099-4.0167-3.3062-7.2538c0.63162 4.3424-0.64149 5.9215-0.64149 5.9215l3.9476 1.3323zm-12.632 4.7372v1.5791c0.55267 0.63162 1.4212 0.78953 1.9738 0.78953 0.55267 0 1.4212-0.1579 1.9738-0.78953 0.55267 0.63162 1.4212 0.78953 1.9738 0.78953 0.55267 0 1.4212-0.1579 1.9738-0.78953 0.55267 0.63162 1.4212 0.78953 1.9738 0.78953 0.55267 0 1.4212-0.1579 1.9738-0.78953 0.55267 0.63162 1.4212 0.78953 1.9738 0.78953 0.55267 0 1.4212-0.1579 1.9738-0.78953v-1.5791c-0.55267 0.63162-1.4212 0.78953-1.9738 0.78953-0.55267 0-1.4212-0.1579-1.9738-0.78953-0.55267 0.63162-1.4212 0.78953-1.9738 0.78953-0.55267 0-1.4212-0.1579-1.9738-0.78953-0.55267 0.63162-1.4212 0.78953-1.9738 0.78953-0.55267 0-1.4212-0.1579-1.9738-0.78953-0.55267 0.63162-1.4212 0.78953-1.9738 0.78953-0.55267 0-1.4212-0.1579-1.9738-0.78953z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapBus.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapBus.imageset/Contents.json
new file mode 100644
index 0000000..08eac12
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapBus.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "bus.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapBus.imageset/bus.svg b/iosApp/iosApp/Assets.xcassets/MapBus.imageset/bus.svg
new file mode 100644
index 0000000..2f3b923
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapBus.imageset/bus.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m16.144 23.756q0.34724-0.34724 0.34724-0.83154t-0.34724-0.8224q-0.3381-0.34724-0.8224-0.34724-0.48431 0-0.83154 0.34724-0.3381 0.3381-0.3381 0.8224 0 0.48431 0.3381 0.83154 0.34724 0.3381 0.83154 0.3381t0.8224-0.3381zm9.3571 0q0.34724-0.34724 0.34724-0.83154t-0.34724-0.8224q-0.3381-0.34724-0.8224-0.34724-0.48431 0-0.83154 0.34724-0.3381 0.3381-0.3381 0.8224 0 0.48431 0.3381 0.83154 0.34724 0.3381 0.83154 0.3381t0.8224-0.3381zm-0.0731-4.4501-0.65793-3.5089q-0.04569-0.21017-0.21017-0.3381-0.15534-0.13707-0.36551-0.13707h-8.3885q-0.21017 0-0.37465 0.13707-0.15534 0.12793-0.20103 0.3381l-0.65792 3.5089q-0.046 0.274 0.128 0.484t0.448 0.21h9.7044q0.27414 0 0.44775-0.21017 0.17362-0.21017 0.12794-0.48431zm-2.193-5.282q0.12794-0.12794 0.12794-0.31069 0-0.18276-0.12794-0.31069-0.12793-0.12794-0.31069-0.12794h-5.8482q-0.18276 0-0.31069 0.12794-0.12793 0.12793-0.12793 0.31069t0.12793 0.31069q0.12794 0.12794 0.31069 0.12794h5.8482q0.18276 0 0.31069-0.12794zm3.7831 6.3142v5.5101h-1.1696v1.1696q0 0.48431-0.34724 0.8224-0.3381 0.34724-0.8224 0.34724-0.48431 0-0.83154-0.34724-0.3381-0.3381-0.3381-0.8224v-1.1696h-7.0179v1.1696q0 0.48431-0.34724 0.8224-0.3381 0.34724-0.8224 0.34724-0.48431 0-0.83154-0.34724-0.3381-0.3381-0.3381-0.8224v-1.1696h-1.1696v-5.5101q0-1.0234 0.22844-2.0377l0.9412-4.1486q0.08224-0.71275 0.88637-1.2519 0.81327-0.53913 2.1017-0.81327 1.2976-0.27414 2.8601-0.27414 1.5626 0 2.851 0.27414 1.2976 0.27413 2.1017 0.81327 0.81327 0.53913 0.89551 1.2519l0.95948 4.1486q0.21017 0.93206 0.21017 2.0377z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapCar.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapCar.imageset/Contents.json
new file mode 100644
index 0000000..99d7aad
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapCar.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "car.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapCar.imageset/car.svg b/iosApp/iosApp/Assets.xcassets/MapCar.imageset/car.svg
new file mode 100644
index 0000000..da5b555
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapCar.imageset/car.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1" stroke="#333">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m15.029 22.296q0.39535-0.39535 0.39535-0.95053t-0.39535-0.95053q-0.396-0.395-0.951-0.395-0.55518 0-0.95053 0.39535t-0.39535 0.95053 0.39535 0.95053 0.95053 0.39535 0.95053-0.39535zm0.69818-3.6423h8.5463l-0.74865-3.003q-0.01682-0.06729-0.11777-0.143-0.10094-0.08412-0.17665-0.08412h-6.4602q-0.07572 0-0.17665 0.08412-0.10095 0.07571-0.11777 0.143l-0.74865 3.003zm11.146 3.6423q0.39535-0.39535 0.39535-0.95053t-0.39535-0.95053q-0.396-0.395-0.951-0.395-0.55518 0-0.95053 0.39535t-0.39535 0.95053 0.39535 0.95053 0.95053 0.39535 0.95053-0.39535zm1.7412-1.7581v3.2301q0 0.11777-0.07571 0.19347-0.07572 0.07571-0.19347 0.07571h-0.80753v1.0767q0 0.67294-0.47106 1.144t-1.144 0.47106-1.144-0.47106-0.47106-1.144v-1.0767h-8.6136v1.0767q0 0.67294-0.47106 1.144t-1.144 0.47106-1.144-0.47106-0.47106-1.144v-1.0767h-0.80753q-0.11777 0-0.19347-0.07571-0.07571-0.07572-0.07571-0.19347v-3.2301q0-0.78229 0.54676-1.3291 0.55518-0.55518 1.3375-0.55518h0.23553l0.88324-3.5245q0.19347-0.7907 0.87482-1.3206 0.68135-0.53835 1.5057-0.53835h6.4602q0.82435 0 1.5057 0.53835 0.68135 0.52994 0.87482 1.3206l0.88323 3.5245h0.23553q0.78229 0 1.3291 0.55518 0.55518 0.54676 0.55518 1.3291z" stroke-width=".1"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapCrane.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapCrane.imageset/Contents.json
new file mode 100644
index 0000000..76c7751
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapCrane.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "crane.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapCrane.imageset/crane.svg b/iosApp/iosApp/Assets.xcassets/MapCrane.imageset/crane.svg
new file mode 100644
index 0000000..6b66b77
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapCrane.imageset/crane.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816-1.1309 3.3906a12.374 12.374 0 0 1 1.1309 -0.0625 12.374 12.374 0 0 1 1.1289 0.056641l-1.129-3.3847zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" stroke-width=".75357" d="m24.334 12.464-4.2153 3.0143c0.10399 0.11605 0.20347 0.23888 0.28259 0.37679l0.51808 0.91842 2.0252-1.4601-1.5778 2.2372 0.49453 0.87132c0.14017 0.18613 0.25282 0.39374 0.32969 0.61228l4.5921-6.5702h-2.4491zm2.4491 1.3188-1.5071 2.143v4.074c0 0.41597 0.3376 0.75357 0.75358 0.75357 0.41522 0 0.75357 0.33836 0.75357 0.75358s-0.33836 0.75357-0.75357 0.75357c-0.41522 0-0.75358-0.33835-0.75358-0.75357h-1.5071c0 1.3858 1.2521 2.4766 2.6846 2.2136 0.88771-0.16277 1.6164-0.87999 1.7897-1.7662 0.22909-1.1718-0.45328-2.2074-1.4601-2.5669v-5.6047zm-12.057 1.6955c-0.8327 0-1.5071 0.67445-1.5071 1.5071v3.7679c0 0.41597 0.3376 0.75358 0.75358 0.75358h0.75357v0.75357h5.275v-0.75357h0.75358c0.41597 0 0.75358-0.3376 0.75358-0.75358v-1.5071l-1.8368-3.0143c-0.269-0.468-0.756-0.753-1.296-0.753h-3.6501zm1.5071 1.5071h2.143l1.2952 2.2607h-3.4382v-2.2607zm-2.2607 6.0286c-1.2487 0-2.2607 1.0121-2.2607 2.2607 0 1.2487 1.012 2.2607 2.2607 2.2607h6.7822c1.2487 0 2.2607-1.0121 2.2607-2.2607 0-1.2487-1.0121-2.2607-2.2607-2.2607h-6.7822zm0 1.5071c0.41597 0 0.75357 0.3376 0.75357 0.75357s-0.3376 0.75358-0.75357 0.75358-0.75358-0.3376-0.75358-0.75358c0-0.41597 0.3376-0.75357 0.75358-0.75357zm2.2607 0c0.41597 0 0.75358 0.3376 0.75358 0.75357s-0.3376 0.75358-0.75358 0.75358c-0.41597 0-0.75357-0.3376-0.75357-0.75358 0-0.41597 0.3376-0.75357 0.75357-0.75357zm2.2607 0c0.41597 0 0.75358 0.3376 0.75358 0.75357s-0.3376 0.75358-0.75358 0.75358c-0.41597 0-0.75357-0.3376-0.75357-0.75358 0-0.41597 0.3376-0.75357 0.75357-0.75357zm2.2607 0c0.41597 0 0.75358 0.3376 0.75358 0.75357s-0.3376 0.75358-0.75358 0.75358c-0.41597 0-0.75358-0.3376-0.75358-0.75358 0-0.41597 0.3376-0.75357 0.75358-0.75357z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapDefault.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapDefault.imageset/Contents.json
new file mode 100644
index 0000000..cb6c01f
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapDefault.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "default.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapDefault.imageset/default.svg b/iosApp/iosApp/Assets.xcassets/MapDefault.imageset/default.svg
new file mode 100644
index 0000000..f2e9790
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapDefault.imageset/default.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <circle id="icon" cx="20" cy="20" r="5.8251"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapHelicopter.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapHelicopter.imageset/Contents.json
new file mode 100644
index 0000000..46ef9f8
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapHelicopter.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "helicopter.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapHelicopter.imageset/helicopter.svg b/iosApp/iosApp/Assets.xcassets/MapHelicopter.imageset/helicopter.svg
new file mode 100644
index 0000000..f9c8241
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapHelicopter.imageset/helicopter.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816-1.1309 3.3906a12.374 12.374 0 0 1 1.1309 -0.0625 12.374 12.374 0 0 1 1.1289 0.056641l-1.129-3.3847zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" stroke-width=".88712" d="m14.606 13.91v1.7742h6.2098v0.88712c-2.6614 0-3.5165 1.7281-3.5485 1.7742h-3.5485v0.88712 0.88712l3.5485 0.88712c0 1.3236 1.3378 2.6614 2.6614 2.6614h2.6614c2.6614 0 4.4356-0.76026 4.4356-2.6614 0-1.6225-2.2284-3.988-5.3227-4.3802v-0.94256h6.2098v-1.7742l-6.2098 0.88712v-0.44356c0-0.24485-0.19872-0.44356-0.44356-0.44356s-0.44356 0.19871-0.44356 0.44356v0.44356l-6.2098-0.88712zm-0.88712 5.3227c0-0.97989-0.79436-1.7742-1.7742-1.7742-0.97988 0-1.7742 0.79435-1.7742 1.7742 0 0.97988 0.79436 1.7742 1.7742 1.7742 0.97989 0 1.7742-0.79436 1.7742-1.7742zm7.9841-0.88712c0.2821-0.03992 2.8831 0.79042 3.5485 2.6614h-3.5485v-2.6614zm4.4356 5.3227v0.88712h-8.8712v1.7742h8.8712c0.98027 0 1.7742-0.79397 1.7742-1.7742v-0.88712h-1.7742z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapMotorcycle.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapMotorcycle.imageset/Contents.json
new file mode 100644
index 0000000..52e8181
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapMotorcycle.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "motorcycle.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapMotorcycle.imageset/motorcycle.svg b/iosApp/iosApp/Assets.xcassets/MapMotorcycle.imageset/motorcycle.svg
new file mode 100644
index 0000000..d8d18f1
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapMotorcycle.imageset/motorcycle.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m29.386 21.143q0.09803 0.8414-0.17972 1.6256-0.27774 0.77605-0.80873 1.3315-0.53098 0.55549-1.2989 0.86591-0.75971 0.31042-1.6011 0.25324-1.3152-0.08986-2.2873-1.0211-0.96394-0.93126-1.0946-2.2383-0.09803-0.90675 0.22056-1.7155 0.32676-0.8169 0.9721-1.3969l-0.58-0.87408q-0.78422 0.65352-1.2335 1.5848-0.44929 0.93126-0.44929 1.9932 0 0.22056-0.15521 0.38394-0.14704 0.15521-0.3676 0.15521h-2.0913-0.56366q-0.18789 1.3397-1.2172 2.2383-1.0293 0.89858-2.4017 0.89858-1.5113 0-2.5896-1.0701-1.0701-1.0783-1.0701-2.5896t1.0701-2.5814q1.0783-1.0783 2.5896-1.0783 0.62084 0 1.2417 0.22056l0.19606-0.3676q-1.0048-0.89858-2.4834-0.89858h-0.52281q-0.21239 0-0.3676-0.15521t-0.15521-0.3676 0.15521-0.3676 0.3676-0.15521h1.0456q0.63718 0 1.1845 0.11437 0.54732 0.1062 0.9476 0.31042 0.40845 0.20422 0.58816 0.32676 0.17972 0.11437 0.41662 0.29408h4.1825 0.93943l-0.69436-1.0456h-1.8135q-0.24507 0-0.40028-0.17972-0.15521-0.18789-0.11437-0.43296 0.03267-0.18789 0.18788-0.31042t0.35126-0.12253h2.0667q0.26958 0 0.43296 0.22873l0.57183 0.85774 0.93126-0.93126q0.15521-0.15521 0.37577-0.15521h0.82506q0.21239 0 0.3676 0.15521t0.15521 0.3676v1.0456q0 0.21239-0.15521 0.3676t-0.3676 0.15521h-1.4622l0.93943 1.4051q1.0701-0.51465 2.2465-0.29408 1.1682 0.21239 1.9932 1.1028 0.82506 0.88225 0.96394 2.0667zm-15.137 3.039q0.93943 0 1.6583-0.58816 0.71887-0.59634 0.90675-1.5031h-2.5651q-0.28591 0-0.44929-0.25324-0.14704-0.26141-0.0082-0.51464l1.2008-2.2628q-0.38394-0.1062-0.74338-0.1062-1.0783 0-1.8462 0.76788-0.76788 0.76788-0.76788 1.8462t0.76788 1.8462q0.76788 0.76788 1.8462 0.76788zm9.6557-0.76788q0.76788 0.76788 1.8462 0.76788t1.8462-0.76788q0.76788-0.76788 0.76788-1.8462t-0.76788-1.8462q-0.76788-0.76788-1.8462-0.76788-0.49014 0-0.98844 0.19606l1.4214 2.1239q0.12254 0.18789 0.0817 0.40028-0.04085 0.21239-0.22056 0.32676-0.12253 0.08986-0.29408 0.08986-0.28591 0-0.43296-0.2369l-1.4214-2.1239q-0.75971 0.77605-0.75971 1.838 0 1.0783 0.76788 1.8462z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapOffroad.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapOffroad.imageset/Contents.json
new file mode 100644
index 0000000..edae916
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapOffroad.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "offroad.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapOffroad.imageset/offroad.svg b/iosApp/iosApp/Assets.xcassets/MapOffroad.imageset/offroad.svg
new file mode 100644
index 0000000..51c9c81
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapOffroad.imageset/offroad.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816-1.1309 3.3906a12.374 12.374 0 0 1 1.1309 -0.0625 12.374 12.374 0 0 1 1.1289 0.056641l-1.129-3.3847zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" style="block-progression:tb;text-transform:none;text-indent:0" stroke-width=".80151" overflow="visible" d="m12.987 13.989c-0.51858 0-0.78749 0.10941-1.052 0.55104-0.2645 0.44164-1.5529 4.3925-1.5529 5.0345v2.7803c0 0.65003 0.60274 1.2524 1.2023 1.2524h0.40076c0 1.3281 1.0764 2.4045 2.4045 2.4045s2.4045-1.0764 2.4045-2.4045h7.2136c0 1.3281 1.0764 2.4045 2.4045 2.4045s2.4045-1.0764 2.4045-2.4045c0-0.07005-0.01918-0.13186-0.02505-0.20038 0.37553-0.28539 0.82656-0.80321 0.82656-1.052v-2.2292c0-0.86884-1.5457-1.1858-4.258-1.8535 0 0-2.4963-2.9345-3.156-3.732-0.42881-0.51858-0.98827-0.55104-1.4026-0.55104h-7.8148zm2.655 1.2774h1.9537v3.5317h-2.8303c-0.36549 0-0.64622-0.1066-0.52599-0.70132 0.12504-0.62037 0.51638-2.1555 0.62618-2.4296 0.12504-0.31099 0.38132-0.40076 0.77647-0.40076zm3.5567 0h1.7283c0.30858 0 0.65684 0.09879 0.85161 0.32562l2.2793 2.7051c0.25408 0.33664 0.14287 0.50095-0.17533 0.50095h-4.6838v-3.5317zm-4.8091 7.1385c0.66285 0 1.2023 0.53942 1.2023 1.2023 0 0.66285-0.53942 1.2023-1.2023 1.2023-0.66285 0-1.2023-0.53942-1.2023-1.2023 0-0.66285 0.53942-1.2023 1.2023-1.2023zm12.023 0c0.66285 0 1.2023 0.53942 1.2023 1.2023 0 0.66285-0.53942 1.2023-1.2023 1.2023-0.66285 0-1.2023-0.53942-1.2023-1.2023 0-0.66285 0.53942-1.2023 1.2023-1.2023z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapPerson.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapPerson.imageset/Contents.json
new file mode 100644
index 0000000..e422019
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapPerson.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "person.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapPerson.imageset/person.svg b/iosApp/iosApp/Assets.xcassets/MapPerson.imageset/person.svg
new file mode 100644
index 0000000..124bbaf
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapPerson.imageset/person.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m26.287 24.941q0 1.0708-0.6189 1.837-0.60907 0.76625-1.4736 0.76625h-8.3895q-0.86449 0-1.4834-0.76625-0.60907-0.76625-0.60907-1.837 0-0.83502 0.07859-1.5718 0.08841-0.7466 0.31436-1.4932 0.22595-0.75643 0.56978-1.2869 0.35366-0.54031 0.92343-0.87432 0.5796-0.34383 1.3262-0.34383 1.2869 1.2574 3.0748 1.2574t3.0748-1.2574q0.7466 0 1.3164 0.34383 0.5796 0.33401 0.92343 0.87432 0.35366 0.53048 0.5796 1.2869 0.22595 0.7466 0.30454 1.4932 0.08842 0.73678 0.08842 1.5718zm-3.625-11.376q1.1101 1.1003 1.1101 2.6622 0 1.562-1.1101 2.6721-1.1 1.101-2.662 1.101t-2.6721-1.1003q-1.1003-1.1101-1.1003-2.6721t1.1003-2.6622q1.11-1.11 2.672-1.11t2.6622 1.1101z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapPickup.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapPickup.imageset/Contents.json
new file mode 100644
index 0000000..004cfb7
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapPickup.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "pickup.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapPickup.imageset/pickup.svg b/iosApp/iosApp/Assets.xcassets/MapPickup.imageset/pickup.svg
new file mode 100644
index 0000000..50bf57b
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapPickup.imageset/pickup.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816-1.1309 3.3906a12.374 12.374 0 0 1 1.1309 -0.0625 12.374 12.374 0 0 1 1.1289 0.056641l-1.129-3.3847zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" stroke-width=".88152" d="m17.19 14.711a0.8816 0.8816 0 0 0 -0.68868 0.66114l-0.71623 2.8649h-3.2781c-0.96967 0-1.763 0.79336-1.763 1.763v2.1211c0 0.35261 0.17079 0.62257 0.5234 0.79887l1.2672 0.4683c0.14704 1.0824 1.0477 1.9008 2.1762 1.9008 1.0799 0 1.9462-0.75066 2.1487-1.763h7.1623c0.20247 1.0124 1.0688 1.763 2.1487 1.763 1.157 0 2.0652-0.85999 2.1762-1.9834l0.4683-0.30302c0.26446-0.1763 0.44076-0.52891 0.44076-0.88152v-1.5151c0-0.35261-0.25344-0.68318-0.60604-0.77133l-3.9668-1.3498-2.1762-2.7272-0.0551-0.08264-0.02755 0.02755c-0.44623-0.66103-1.2059-0.99171-1.9008-0.99171h-3.1679a0.8816 0.8816 0 0 0 -0.08265 0 0.8816 0.8816 0 0 0 -0.08264 0zm0.85397 1.763h2.4793c0.33302 0 0.40036 0.03368 0.49585 0.19283a0.8816 0.8816 0 0 0 0.0551 0.08264l1.1845 1.4876h-4.6555l0.44076-1.763zm-3.3332 5.8125c0.44076 0 0.79887 0.35812 0.79887 0.79887 0 0.44076-0.35812 0.79887-0.79887 0.79887-0.44076 0-0.79887-0.35812-0.79887-0.79887 0-0.44076 0.35812-0.79887 0.79887-0.79887zm11.46 0c0.44076 0 0.79887 0.35812 0.79887 0.79887 0 0.44076-0.35812 0.79887-0.79887 0.79887-0.44076 0-0.79887-0.35812-0.79887-0.79887 0-0.44076 0.35812-0.79887 0.79887-0.79887z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapPlane.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapPlane.imageset/Contents.json
new file mode 100644
index 0000000..65ca743
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapPlane.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "plane.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapPlane.imageset/plane.svg b/iosApp/iosApp/Assets.xcassets/MapPlane.imageset/plane.svg
new file mode 100644
index 0000000..a46eb74
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapPlane.imageset/plane.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m26.238 13.763q0.4325 0.51114 0.11796 1.4548-0.31455 0.94364-1.0616 1.6907l-1.5826 1.5826 1.5727 6.8414q0.04915 0.18676-0.11796 0.32438l-1.2582 0.94364q-0.06881 0.05897-0.18676 0.05897-0.03931 0-0.06881-0.0099-0.14744-0.0295-0.20642-0.15727l-2.7425-4.9934-2.5459 2.5459 0.52097 1.9069q0.04915 0.1671-0.07864 0.30472l-0.94364 0.94364q-0.08847 0.08847-0.22608 0.08847h-0.01966q-0.14744-0.01966-0.23591-0.12778l-1.8578-2.477-2.4771-1.8578q-0.10813-0.06881-0.12778-0.22608-0.0099-0.12778 0.08847-0.24574l0.94364-0.95343q0.08847-0.08847 0.22608-0.08847 0.05898 0 0.07864 0.0099l1.9069 0.52097 2.5459-2.5459-4.9934-2.7425q-0.13762-0.07863-0.1671-0.23591-0.01966-0.15728 0.08847-0.2654l1.2582-1.2582q0.13762-0.12778 0.29489-0.07864l6.5367 1.5629 1.5727-1.5727q0.74705-0.74705 1.6907-1.0616 0.94364-0.31455 1.4548 0.11796z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapScooter.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapScooter.imageset/Contents.json
new file mode 100644
index 0000000..1155efa
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapScooter.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "scooter.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapScooter.imageset/scooter.svg b/iosApp/iosApp/Assets.xcassets/MapScooter.imageset/scooter.svg
new file mode 100644
index 0000000..c7b531c
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapScooter.imageset/scooter.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" style="text-decoration-color:#000000;block-progression:tb;isolation:auto;mix-blend-mode:normal;text-indent:0;text-decoration-line:none;white-space:normal;text-transform:none;text-decoration-style:solid" stroke-width=".60887" d="m20.609 12.298a0.60893 0.60893 0 1 0 0 1.2177h1.3795l2.0228 6.443-2.5163 3.9077h-5.871c-0.25412-0.70466-0.92507-1.2177-1.7124-1.2177-1.0016 0-1.8266 0.82501-1.8266 1.8266s0.82501 1.8266 1.8266 1.8266c0.78736 0 1.4583-0.51307 1.7124-1.2177h6.2028a0.60893 0.60893 0 0 0 0.51135 -0.27946l2.1477-3.3345 0.49232 1.5697c-0.43114 0.33547-0.71589 0.85238-0.71589 1.4354 0 1.0016 0.82501 1.8266 1.8266 1.8266s1.8266-0.82501 1.8266-1.8266c0-0.98654-0.80143-1.7976-1.7826-1.8218l-3.1157-9.9286a0.60893 0.60893 0 0 0 -0.58151 -0.42692h-1.8266zm-6.6975 11.568c0.33112 0 0.58355 0.24891 0.60173 0.57438a0.60893 0.60893 0 0 0 0 0.07017c-0.01874 0.32487-0.27102 0.57319-0.60173 0.57319-0.34348 0-0.60887-0.26539-0.60887-0.60887s0.26539-0.60887 0.60887-0.60887zm12.177 0c0.34348 0 0.60887 0.26539 0.60887 0.60886 0 0.34348-0.26539 0.60887-0.60887 0.60887s-0.60886-0.26539-0.60886-0.60887 0.26539-0.60886 0.60886-0.60886z" white-space="normal" overflow="visible" font-weight="400"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapShip.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapShip.imageset/Contents.json
new file mode 100644
index 0000000..3fd9cd4
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapShip.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "ship.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapShip.imageset/ship.svg b/iosApp/iosApp/Assets.xcassets/MapShip.imageset/ship.svg
new file mode 100644
index 0000000..f94a6bb
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapShip.imageset/ship.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m26.094 25.102q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.99107 0.99107-0.69685 0.69685-0.64265-0.64265-0.64265 0.64265q-0.13937 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.99107-0.99107 0.69685-0.69685 0.64265 0.64265 0.64265-0.64265q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.64265 0.64265 0.64265-0.64265q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.64265 0.64265 0.64265-0.64265q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.64265 0.64265 0.64265-0.64265q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.64265 0.64265 0.64265-0.64265q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.64265 0.64265 0.64265-0.64265q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.64265 0.64265 0.64265-0.64265zm-12.188-0.294q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.99107-0.99107 0.69685-0.69685 0.64265 0.6349 0.64265-0.6349q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.64265 0.6349 0.49554-0.49554v-2.2686l-1.626-2.4312q-0.13163-0.20131-0.0542-0.43359 0.07743-0.24003 0.30971-0.31745l1.3705-0.44908v-2.3151h0.99107v-0.99107h1.9821v-0.99107h1.9821v0.99107h1.9821v0.99107h0.99107v2.3151l1.3705 0.44908q0.23228 0.07742 0.30971 0.31745 0.07743 0.23228-0.0542 0.43359l-1.626 2.4312v2.2686l0.14711-0.13937q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.64265 0.6349 0.64265-0.6349q0.14711-0.14711 0.34842-0.14711t0.34842 0.14711l0.99107 0.99107-0.69685 0.69685-0.64265-0.64265-0.64265 0.64265q-0.13937 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64264-0.64265-0.64265 0.64265q-0.14711 0.14711-0.34842 0.14711t-0.34842-0.14711l-0.64265-0.64265-0.64265 0.64265zm3.1203-8.7725v0.99107l2.974-0.991 2.9732 0.99107v-0.99107h-0.99107v-0.99107h-3.9643v0.99107h-0.99107z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapTractor.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapTractor.imageset/Contents.json
new file mode 100644
index 0000000..0774718
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTractor.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "tractor.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapTractor.imageset/tractor.svg b/iosApp/iosApp/Assets.xcassets/MapTractor.imageset/tractor.svg
new file mode 100644
index 0000000..96643ef
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTractor.imageset/tractor.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816-1.1309 3.3906a12.374 12.374 0 0 1 1.1309 -0.0625 12.374 12.374 0 0 1 1.1289 0.056641l-1.129-3.3847zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" stroke-width=".84153" d="m13.105 12.427a0.84162 0.84162 0 0 0 -0.68375 0.84153v5.0492a0.84162 0.84162 0 0 0 0 0.07889v1.8672c0.84153-0.67323 1.8514-1.1045 2.9454-1.1045 2.5246 0 4.6284 2.1038 4.6284 4.6284v0.42077h3.7869c-0.25895 0.34961-0.42077 0.78515-0.42077 1.2623 0 1.1781 0.92569 2.1038 2.1038 2.1038s2.1038-0.92569 2.1038-2.1038c0-0.55373-0.21318-1.0478-0.55226-1.4201 0.49718-0.2262 0.85521-0.67323 0.97302-1.2623l0.42077-2.7087c0.08415-0.42077-0.33661-0.92043-0.84153-0.92043l-7.1267-0.78894-1.3149-5.3122a0.84162 0.84162 0 0 0 -0.81524 -0.63115h-5.0492a0.84162 0.84162 0 0 0 -0.07889 0 0.84162 0.84162 0 0 0 -0.07889 0zm0.99932 1.6831h3.5502l1.0256 4.0499-4.5758-0.49966v-3.5502zm10.098 0v3.6291l1.6831 0.23668v-3.8658h-1.6831zm-8.8361 5.8907c-2.1038 0-3.7869 1.6831-3.7869 3.7869s1.6831 3.7869 3.7869 3.7869 3.7869-1.6831 3.7869-3.7869-1.6831-3.7869-3.7869-3.7869zm0 1.2623c1.4306 0 2.5246 1.094 2.5246 2.5246s-1.094 2.5246-2.5246 2.5246-2.5246-1.094-2.5246-2.5246 1.094-2.5246 2.5246-2.5246zm10.098 3.3661c0.50492 0 0.84154 0.33661 0.84154 0.84154 0 0.50492-0.33661 0.84153-0.84154 0.84153-0.50492 0-0.84153-0.33661-0.84153-0.84153s0.33661-0.84154 0.84153-0.84154z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapTrain.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapTrain.imageset/Contents.json
new file mode 100644
index 0000000..6ff5ee7
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTrain.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "train.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapTrain.imageset/train.svg b/iosApp/iosApp/Assets.xcassets/MapTrain.imageset/train.svg
new file mode 100644
index 0000000..e4b10ac
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTrain.imageset/train.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m18.127 11.484c-0.59864 0-1.0869 0.44565-1.1707 1.0217h-0.362c-1.3143 0-2.3839 1.027-2.3839 2.2881v9.7272c0 0.878 0.51749 1.6389 1.2771 2.0221l-1.6389 1.3622c-0.14633 0.12106-0.16895 0.3379-0.04789 0.48423s0.3379 0.16895 0.48423 0.04789l1.9688-1.6496c0.11175 0.01596 0.22482 0.02128 0.34056 0.02128h6.8111c0.11574 0 0.22881-0.0054 0.34056-0.02128l1.9688 1.6496c0.14633 0.12106 0.36317 0.09844 0.48423-0.04789s0.09844-0.36317-0.04789-0.48423l-1.6389-1.3622c0.7596-0.38313 1.2771-1.1441 1.2771-2.0221v-9.727c0-1.2611-1.0696-2.2881-2.3839-2.2881h-0.36183c-0.08381-0.57602-0.57203-1.0217-1.1707-1.0217-0.59864 0-1.0869 0.44565-1.1707 1.0217h-1.4048c-0.08381-0.57602-0.57203-1.0217-1.1707-1.0217zm0 0.68111c0.28202 0 0.51084 0.22881 0.51084 0.51084 0 0.28202-0.22881 0.51084-0.51084 0.51084-0.28202 0-0.51084-0.22881-0.51084-0.51084 0-0.28202 0.22881-0.51084 0.51084-0.51084zm3.7461 0c0.28202 0 0.51084 0.22881 0.51084 0.51084 0 0.28202-0.22881 0.51084-0.51084 0.51084-0.28202 0-0.51084-0.22881-0.51084-0.51084 0-0.28202 0.22881-0.51084 0.51084-0.51084zm-3.9164 2.7245h4.0867c0.1889 0 0.34056 0.15298 0.34056 0.34056v0.68111h-4.7678v-0.68111c0-0.18757 0.15298-0.34056 0.34056-0.34056zm-1.3622 1.7028h6.8111c0.37648 0 0.68111 0.28336 0.68111 0.6279v2.4903c0 0.34455-0.30464 0.6279-0.68111 0.6279h-6.8111c-0.37648 0-0.68111-0.28335-0.68111-0.6279v-2.4903c0-0.34455 0.30464-0.6279 0.68111-0.6279zm0.34056 6.13c0.56405 0 1.0217 0.45762 1.0217 1.0217 0 0.56405-0.45762 1.0217-1.0217 1.0217-0.56405 0-1.0217-0.45762-1.0217-1.0217 0-0.56405 0.45762-1.0217 1.0217-1.0217zm6.13 0c0.56405 0 1.0217 0.45762 1.0217 1.0217 0 0.56405-0.45762 1.0217-1.0217 1.0217-0.56405 0-1.0217-0.45762-1.0217-1.0217 0-0.56405 0.45762-1.0217 1.0217-1.0217z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapTram.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapTram.imageset/Contents.json
new file mode 100644
index 0000000..c04e17e
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTram.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "tram.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapTram.imageset/tram.svg b/iosApp/iosApp/Assets.xcassets/MapTram.imageset/tram.svg
new file mode 100644
index 0000000..70a0307
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTram.imageset/tram.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m20 11.299c-2.5762 0-3.8283 0.45542-3.8283 1.3921 0 0.19168 0.15634 0.34802 0.34802 0.34802s0.34802-0.15634 0.34802-0.34802c0-0.17129 0.34666-0.45134 1.4247-0.59817l0.294 1.719c-2.8141 0.3154-4.5026 1.5512-4.5026 2.7081v8.1024c0 1.0726 0.7545 1.978 1.7836 2.2513l-1.4574 1.2181c-0.14546 0.12235-0.16586 0.33307-0.0435 0.47853 0.06797 0.08157 0.16314 0.13051 0.26102 0.13051 0.07749 0 0.16314-0.03264 0.22839-0.087l1.9794-1.6531h6.3297l1.9794 1.6531c0.06525 0.05438 0.1509 0.087 0.22839 0.087 0.09788 0 0.19304-0.04894 0.26102-0.13051 0.12235-0.14546 0.10196-0.35618-0.0435-0.47853l-1.4574-1.2181c1.0291-0.27325 1.7836-1.1787 1.7836-2.2513v-8.1024c0-1.1569-1.6885-2.3927-4.5026-2.7081l0.29364-1.7184c1.0781 0.14682 1.4247 0.42687 1.4247 0.59817 0 0.19168 0.15498 0.34802 0.34802 0.34802s0.34802-0.15634 0.34802-0.34802c0-0.93667-1.2521-1.3921-3.8283-1.3921zm0 0.69605c0.37793 0 0.70285 0.01359 1.0006 0.03264l-0.29365 1.7292c-0.23111-0.01223-0.46358-0.02175-0.70692-0.02175-0.24335 0-0.47581 0.0095-0.70692 0.02175l-0.294-1.729c0.29772-0.01903 0.62264-0.03264 1.0006-0.03264zm-2.0881 3.8283h4.1763c0.19304 0 0.34802 0.15634 0.34802 0.34802v0.69605h-4.8723v-0.69605c0-0.19168 0.15634-0.34802 0.34803-0.34802zm-1.3921 1.7401h6.9605c0.38473 0 0.69605 0.28957 0.69605 0.64167v2.5449c0 0.3521-0.31132 0.64167-0.69605 0.64167h-6.9605c-0.38473 0-0.69605-0.28957-0.69605-0.64167v-2.5449c0-0.3521 0.31132-0.64167 0.69605-0.64167zm0.34802 5.5684c0.57641 0 1.0441 0.46766 1.0441 1.0441 0 0.57642-0.46766 1.0441-1.0441 1.0441-0.57642 0-1.0441-0.46766-1.0441-1.0441 0-0.57642 0.46766-1.0441 1.0441-1.0441zm6.2644 0c0.57641 0 1.0441 0.46766 1.0441 1.0441 0 0.57642-0.46766 1.0441-1.0441 1.0441-0.57642 0-1.0441-0.46766-1.0441-1.0441 0-0.57642 0.46766-1.0441 1.0441-1.0441z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapTrolleybus.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapTrolleybus.imageset/Contents.json
new file mode 100644
index 0000000..b1013a6
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTrolleybus.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "trolleybus.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapTrolleybus.imageset/trolleybus.svg b/iosApp/iosApp/Assets.xcassets/MapTrolleybus.imageset/trolleybus.svg
new file mode 100644
index 0000000..344ae8d
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTrolleybus.imageset/trolleybus.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m16.909 11.561c-0.10947 0.01846-0.20311 0.091-0.24927 0.19256-0.04615 0.10024-0.03956 0.21894 0.01715 0.31389l0.70692 1.1817h-1.7726c-1.3031 0-2.3634 1.0604-2.3634 2.3634v10.467c0 0.29807 0.13189 0.56316 0.33763 0.74912v0.60141c0 0.55788 0.45501 1.0129 1.0129 1.0129h1.3505c0.55789 0 1.0129-0.45502 1.0129-1.0129v-0.33763h6.0774v0.33763c0 0.55788 0.45501 1.0129 1.0129 1.0129h1.3505c0.55789 0 1.0129-0.45502 1.0129-1.0129v-0.601c0.204-0.186 0.336-0.451 0.336-0.749v-10.467c0-1.3031-1.0604-2.3634-2.3634-2.3634h-1.7726l0.70692-1.1817c0.06594-0.1121 0.062-0.25191-0.0092-0.35874-0.07254-0.10815-0.20047-0.16618-0.3284-0.14771-0.09892 0.01846-0.18332 0.08045-0.23212 0.16882l-0.90739 1.5193h-3.693l-0.908-1.518c-0.06726-0.12002-0.20179-0.18596-0.33763-0.16882zm-0.96014 3.3763h8.1032c0.57371 0 1.0129 0.43919 1.0129 1.0129v4.7269c0 0.57371-0.43919 1.0129-1.0129 1.0129h-8.1032c-0.57371 0-1.0129-0.43919-1.0129-1.0129v-4.7269c0-0.57371 0.43919-1.0129 1.0129-1.0129zm-3.0387 2.0258c-0.39171 0-0.67527 0.28356-0.67527 0.67526v2.0258c0 0.39171 0.28356 0.67527 0.67527 0.67527zm14.181 0v3.3763c0.39171 0 0.67527-0.28356 0.67527-0.67527v-2.0258c0-0.39171-0.28356-0.67526-0.67527-0.67526zm-11.142 6.415c0.5592 0 1.0129 0.4537 1.0129 1.0129s-0.4537 1.0129-1.0129 1.0129c-0.55921 0-1.0129-0.45369-1.0129-1.0129 0-0.5592 0.45369-1.0129 1.0129-1.0129zm8.1032 0c0.5592 0 1.0129 0.4537 1.0129 1.0129s-0.4537 1.0129-1.0129 1.0129c-0.55921 0-1.0129-0.45369-1.0129-1.0129 0-0.5592 0.45369-1.0129 1.0129-1.0129z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapTruck.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapTruck.imageset/Contents.json
new file mode 100644
index 0000000..c95213a
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTruck.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "truck.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapTruck.imageset/truck.svg b/iosApp/iosApp/Assets.xcassets/MapTruck.imageset/truck.svg
new file mode 100644
index 0000000..708744d
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapTruck.imageset/truck.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816l-1.131 3.3907a12.374 12.374 0 0 1 1.131 -0.0625 12.374 12.374 0 0 1 1.129 0.0566l-1.129-3.3848zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" d="m17.031 24.899q0.34603-0.34603 0.34603-0.81955t-0.34603-0.81955-0.81955-0.34603-0.81955 0.34603-0.34603 0.81955 0.34603 0.81955 0.81955 0.34603 0.81955-0.34603zm-3.1507-5.4819h3.4968v-2.3312h-1.4388q-0.11838 0-0.20034 0.08196l-1.7757 1.7757q-0.08196 0.08196-0.08196 0.20033v0.27318zm11.31 5.4819q0.34603-0.34603 0.34603-0.81955t-0.34603-0.81955-0.81955-0.34603-0.81955 0.34603-0.34603 0.81955 0.34603 0.81955 0.81955 0.34603 0.81955-0.34603zm2.6772-10.727v9.3247q0 0.13659-0.03642 0.24587-0.03642 0.10017-0.12749 0.16391-0.08196 0.06375-0.1457 0.10927-0.06374 0.03642-0.21855 0.05463-0.1457 0.0091-0.20034 0.01821-0.05463 0-0.23676 0-0.17302-0.0091-0.20034-0.0091 0 0.96525-0.68296 1.6482-0.68296 0.68296-1.6482 0.68296-0.96525 0-1.6482-0.68296-0.68296-0.68292-0.68296-1.6482h-3.4968q0 0.96525-0.68296 1.6482-0.68296 0.68296-1.6482 0.68296-0.96525 0-1.6482-0.68296-0.68296-0.68296-0.68296-1.6482h-0.58279q-0.02732 0-0.20944 0.0091-0.17302 0-0.22765 0-0.05463-0.0091-0.20944-0.01821-0.1457-0.01821-0.20944-0.05463-0.06375-0.04553-0.1548-0.10927-0.08196-0.06375-0.11838-0.16391-0.03642-0.10927-0.03642-0.24586 0-0.23676 0.17302-0.40978t0.40978-0.17302v-2.914q0-0.07285-0.0091-0.31871 0-0.24587 0-0.34603 0.0091-0.10017 0.02732-0.30961 0.01821-0.21855 0.05463-0.33693 0.04554-0.12749 0.12749-0.28229 0.09106-0.1548 0.20944-0.27318l1.803-1.803q0.17302-0.17302 0.45531-0.2914 0.2914-0.11838 0.53726-0.11838h1.457v-1.7484q0-0.23676 0.17302-0.40978t0.40978-0.17302h9.3247q0.23676 0 0.40978 0.17302t0.17302 0.40978z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Assets.xcassets/MapVan.imageset/Contents.json b/iosApp/iosApp/Assets.xcassets/MapVan.imageset/Contents.json
new file mode 100644
index 0000000..c7b02d6
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapVan.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "filename" : "van.svg",
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/MapVan.imageset/van.svg b/iosApp/iosApp/Assets.xcassets/MapVan.imageset/van.svg
new file mode 100644
index 0000000..3394b88
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/MapVan.imageset/van.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg id="svg4145" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="40" width="40" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" viewBox="0 0 40 40">
+ <g id="layer1">
+ <path id="background" d="m20.002 3.6816-1.1309 3.3906a12.374 12.374 0 0 1 1.1309 -0.0625 12.374 12.374 0 0 1 1.1289 0.056641l-1.129-3.3847zm-0.002 3.9434a12.374 12.374 0 0 0 -12.375 12.375 12.374 12.374 0 0 0 12.375 12.375 12.374 12.374 0 0 0 12.375 -12.375 12.374 12.374 0 0 0 -12.375 -12.375z" stroke="#333" stroke-width="1.9" fill="#008000"/>
+ <path id="icon" stroke-width="0.87" d="m12.17 13.91c-0.48024 0-0.87 0.38976-0.87 0.87v3.48 4.35c0 0.96135 0.77865 1.74 1.74 1.74h0.05438c0.20276 0.99123 1.0693 1.74 2.1206 1.74s1.9179-0.74877 2.1206-1.74h5.3287c0.20277 0.99123 1.0693 1.74 2.1206 1.74s1.9179-0.74877 2.1206-1.74h0.05438c0.96135 0 1.74-0.77865 1.74-1.74v-3.2081-0.27188s-1.1719-3.5328-3.2625-5.0841c-0.13137-0.09831-0.29863-0.13594-0.46219-0.13594h-12.805zm10.44 1.74h2.0119c0.74211 0.65859 1.3787 1.7078 1.8216 2.61h-3.8334v-2.61zm-7.395 7.395c0.47937 0 0.87 0.39063 0.87 0.87s-0.39063 0.87-0.87 0.87-0.87-0.39063-0.87-0.87 0.39063-0.87 0.87-0.87zm9.57 0c0.47937 0 0.87 0.39063 0.87 0.87s-0.39063 0.87-0.87 0.87-0.87-0.39063-0.87-0.87 0.39063-0.87 0.87-0.87z"/>
+ </g>
+</svg>
diff --git a/iosApp/iosApp/Devices/DeviceRow.swift b/iosApp/iosApp/Devices/DeviceRow.swift
index 5fc4e11..f8c8053 100644
--- a/iosApp/iosApp/Devices/DeviceRow.swift
+++ b/iosApp/iosApp/Devices/DeviceRow.swift
@@ -12,94 +12,138 @@ import shared
struct DeviceRow: View {
var unit: UnitInformation
+ enum Action {
+ case details
+ case reports
+ case commands
+ }
+ var callback: (Action) -> ()
+
+ @State var isSheet: Bool = false
+
var body: some View {
- VStack {
- HStack {
- /* Status icon */
- switch (unit.getStatus()) {
- case .online:
- Image(systemName: "circle.fill")
- .foregroundColor(.systemGreen)
- .imageScale(.small)
- case .offline:
- Image(systemName: "circle.fill")
- .foregroundColor(.systemRed)
- .imageScale(.small)
- default:
- EmptyView()
+ let row = HStack {
+ /* Device icon */
+ let category = Marker.companion.categoryToMarkerType(category: unit.device.category)
+ Image(MarkerTransformations.markerTypeToImageName(markerType: category))
+ .padding(5.0)
+
+ VStack {
+ HStack {
+ /* Status icon */
+ switch (unit.getStatus()) {
+ case .online:
+ Image(systemName: "circle.fill")
+ .foregroundColor(.systemGreen)
+ .imageScale(.small)
+ case .offline:
+ Image(systemName: "circle.fill")
+ .foregroundColor(.systemRed)
+ .imageScale(.small)
+ default:
+ EmptyView()
+ }
+
+ /* Engine stop */
+ switch (unit.getEngineStop()) {
+ case .on:
+ Image(systemName: "lock.fill")
+ .foregroundColor(.systemRed)
+ .imageScale(.small)
+ case .off:
+ Image(systemName: "lock.open.fill")
+ .foregroundColor(.systemGreen)
+ .imageScale(.small)
+ default:
+ EmptyView()
+ }
+
+ /* Device name */
+ Text(unit.device.name)
+ Spacer()
}
+ .padding(.bottom, 5.0)
- /* Engine stop */
- switch (unit.getEngineStop()) {
- case .on:
- Image(systemName: "lock.fill")
- .foregroundColor(.systemRed)
- .imageScale(.small)
- case .off:
- Image(systemName: "lock.open.fill")
- .foregroundColor(.systemGreen)
- .imageScale(.small)
- default:
- EmptyView()
+ /* Driver */
+ if let contact = unit.device.contact {
+ HStack {
+ Label(contact, systemImage: "person")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
+ }
}
- /* Device name */
- Text(unit.device.name)
- Spacer()
- }
- .padding(.bottom, 5.0)
-
- /* Driver */
- if let contact = unit.device.contact {
- HStack {
- Label(contact, systemImage: "person")
- .labelStyle(SmallLabelStyle())
- Spacer()
+ /* Speed */
+ if let speed = unit.position?.speed {
+ HStack {
+ Label(Formatter.companion.formatSpeed(
+ speed: Double(truncating: speed),
+ unit: .kmh),
+ systemImage: "speedometer")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
+ }
}
- }
-
- /* Speed */
- if let speed = unit.position?.speed {
- HStack {
- Label(Formatter.companion.formatSpeed(
- speed: Double(truncating: speed),
- unit: .kmh),
- systemImage: "speedometer")
- .labelStyle(SmallLabelStyle())
- Spacer()
+
+ /* Address */
+ if let address = unit.position?.address {
+ HStack {
+ Label(address, systemImage: "mappin.and.ellipse")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
+ }
}
- }
-
- /* Address */
- if let address = unit.position?.address {
- HStack {
- Label(address, systemImage: "mappin.and.ellipse")
- .labelStyle(SmallLabelStyle())
- Spacer()
+
+ /* Hourmeter */
+ if let hourmeter = unit.position?.attributes["hours"] {
+ if let hourmeter = Serialization.companion.longOrNull(json: hourmeter) {
+ HStack {
+ Label(Formatter.companion.formatHours(
+ millis: Int64(truncating: hourmeter)),
+ systemImage: "timer")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
+ }
+ }
}
- }
-
- /* Hourmeter */
- if let hourmeter = unit.position?.attributes["hours"] {
- if let hourmeter = Serialization.companion.longOrNull(json: hourmeter) {
+
+ /* Date time */
+ if let datetime = unit.position?.fixTime {
HStack {
- Label(Formatter.companion.formatHours(
- millis: Int64(truncating: hourmeter)),
- systemImage: "timer")
+ Label(Formatter.companion.formatDate(str: datetime),
+ systemImage: "calendar")
.labelStyle(SmallLabelStyle())
Spacer()
}
}
}
-
- /* Date time */
- if let datetime = unit.position?.fixTime {
- HStack {
- Label(Formatter.companion.formatDate(str: datetime),
- systemImage: "calendar")
- .labelStyle(SmallLabelStyle())
- Spacer()
+ }
+
+ /* Device actions */
+ if #available(iOS 15, *) {
+ row.swipeActions(edge: .trailing, allowsFullSwipe: false) {
+ Button { callback(.commands) } label: {
+ Label("commands", systemImage: "paperplane")
}
+
+ Button { callback(.reports) } label: {
+ Label("reports", systemImage: "clock")
+ }
+
+ Button { callback(.details) } label: {
+ Label("details", systemImage: "info.circle")
+ }
+ }
+ } else {
+ row.onLongPressGesture {
+ self.isSheet = true
+ }
+ .actionSheet(isPresented: $isSheet) {
+ ActionSheet(title: Text("select-action"), message: nil, buttons: [
+ .default(Text("details")) { callback(.details) },
+ .default(Text("reports")) { callback(.reports) },
+ .default(Text("commands")) { callback(.commands) }
+ ])
}
}
}
diff --git a/iosApp/iosApp/Devices/DevicesView.swift b/iosApp/iosApp/Devices/DevicesView.swift
index 7271a70..07951fd 100644
--- a/iosApp/iosApp/Devices/DevicesView.swift
+++ b/iosApp/iosApp/Devices/DevicesView.swift
@@ -12,9 +12,21 @@ struct DevicesView: View {
@StateObject var unitsViewModel: UnitsViewModel
var body: some View {
- List(unitsViewModel.units, id: \.device.id) { unit in
- DeviceRow(unit: unit)
+ List(selection: $unitsViewModel.selectedUnit) {
+ ForEach(unitsViewModel.units, id: \.device.id) { unit in
+ DeviceRow(unit: unit, callback: { action in
+ switch action {
+ case .details:
+ print ("Selected details of \(unit.device.name)")
+ case .reports:
+ print ("Selected reports of \(unit.device.name)")
+ case .commands:
+ print ("Selected commands of \(unit.device.name)")
+ }
+ })
+ }
}
+
.navigationTitle("devices")
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
diff --git a/iosApp/iosApp/Shared/MarkerTransformations.swift b/iosApp/iosApp/Shared/MarkerTransformations.swift
new file mode 100644
index 0000000..b4aaa90
--- /dev/null
+++ b/iosApp/iosApp/Shared/MarkerTransformations.swift
@@ -0,0 +1,40 @@
+//
+// MarkerTransformations.swift
+// iosApp
+//
+// Created by Iván on 29/01/22.
+// Copyright © 2022 orgName. All rights reserved.
+//
+
+import SwiftUI
+import shared
+
+class MarkerTransformations {
+ static func markerTypeToImageName(markerType: Marker.Type_) -> String {
+ var imageName = "MapDefault"
+ switch markerType {
+ case .animal: imageName = "MapAnimal"
+ case .bicycle: imageName = "MapBicycle"
+ case .boat: imageName = "MapBoat"
+ case .bus: imageName = "MapBus"
+ case .car: imageName = "MapCar"
+ case .crane: imageName = "MapCrane"
+ case .helicopter: imageName = "MapHelicopter"
+ case .motorcycle: imageName = "MapMotorcycle"
+ case .offroad: imageName = "MapOffroad"
+ case .person: imageName = "MapPerson"
+ case .pickup: imageName = "MapPickup"
+ case .plane: imageName = "MapPlane"
+ case .scooter: imageName = "MapScooter"
+ case .ship: imageName = "MapShip"
+ case .tractor: imageName = "MapTractor"
+ case .train: imageName = "MapTrain"
+ case .tram: imageName = "MapTram"
+ case .trolleybus: imageName = "MapTrolleybus"
+ case .truck: imageName = "MapTruck"
+ case .van: imageName = "MapVan"
+ default: break
+ }
+ return imageName
+ }
+}