diff --git a/Lora-Map/Model/Botclient.cs b/Lora-Map/Model/Botclient.cs
index bdcc23f..c587ea0 100644
--- a/Lora-Map/Model/Botclient.cs
+++ b/Lora-Map/Model/Botclient.cs
@@ -61,9 +61,15 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model {
if(marker.ContainsKey(id)) {
if(marker[id].ContainsKey("name") && marker[id]["name"].IsString) {
this.Name = (String)marker[id]["name"];
+ } else {
+ this.Name = id;
}
- if(marker[id].ContainsKey("icon") && marker[id]["icon"].IsString) {
+ if(marker[id].ContainsKey("marker.svg") && marker[id]["marker.svg"].IsObject) {
+ this.Icon = Marker.ParseMarkerConfig(marker[id]["marker.svg"], this.Name);
+ } else if(marker[id].ContainsKey("icon") && marker[id]["icon"].IsString) {
this.Icon = (String)marker[id]["icon"];
+ } else {
+ this.Icon = null;
}
} else {
this.Name = id;
diff --git a/Lora-Map/Model/Marker.cs b/Lora-Map/Model/Marker.cs
index 17fd017..b6417df 100644
--- a/Lora-Map/Model/Marker.cs
+++ b/Lora-Map/Model/Marker.cs
@@ -1,6 +1,7 @@
using System;
using System.IO;
using System.Xml;
+using LitJson;
namespace Fraunhofer.Fit.IoT.LoraMap.Model
{
@@ -12,6 +13,27 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model
this.ParseParams(hash);
}
+ public static String ParseMarkerConfig(JsonData json, String name) {
+ String ret = "icons/marker/Marker.svg";
+ if(json.ContainsKey("person") && json["person"].IsObject) {
+ ret += "?icon=person";
+ if(json["person"].ContainsKey("org") && json["person"]["org"].IsString) {
+ ret += "&person-org=" + (String)json["person"]["org"];
+ }
+ if(json["person"].ContainsKey("funct") && json["person"]["funct"].IsString) {
+ ret += "&person-funct=" + (String)json["person"]["funct"];
+ }
+ if(json["person"].ContainsKey("rang") && json["person"]["rang"].IsString) {
+ ret += "&person-rang=" + (String)json["person"]["rang"];
+ }
+ if(json["person"].ContainsKey("text") && json["person"]["text"].IsString) {
+ ret += "&person-text=" + (String)json["person"]["text"];
+ }
+ }
+ ret += (ret.Contains("?")) ? "&name=" + name : "?name=" + name;
+ return ret;
+ }
+
private void ParseParams(String hash) {
String[] parts = hash.Split('&');
foreach(String part in parts) {
@@ -24,8 +46,30 @@ namespace Fraunhofer.Fit.IoT.LoraMap.Model
xmlname.Item(0).InnerText = keyvalue[1];
}
break;
+ case "marker-bg":
+ if(keyvalue[1].ToLower() == "hidden") {
+ XmlNodeList markerbg = this.svg.DocumentElement.SelectNodes("//*[local-name()='defs'][@id='global-def']");
+ if(markerbg.Count == 1) {
+ markerbg[0].InnerXml += "";
+ }
+ XmlNodeList root = this.svg.DocumentElement.SelectNodes("//*[local-name()='svg']");
+ if(root.Count == 1) {
+ foreach(XmlAttribute item in root[0].Attributes) {
+ if(item.Name.ToLower() == "height") {
+ item.Value = "38px";
+ }
+ if(item.Name.ToLower() == "width") {
+ item.Value = "40px";
+ }
+ if(item.Name.ToLower() == "viewbox") {
+ item.Value = "8 35 70 100";
+ }
+ }
+ }
+ }
+ break;
case "icon":
- if(keyvalue[1] == "person") {
+ if(keyvalue[1].ToLower() == "person") {
XmlNodeList xmlicon = this.svg.DocumentElement.SelectNodes("//*[local-name()='defs'][@id='global-def']");
if (xmlicon.Count == 1) {
xmlicon.Item(0).InnerXml += "";
diff --git a/Lora-Map/names.json b/Lora-Map/names.json
index da7f704..65ce723 100644
--- a/Lora-Map/names.json
+++ b/Lora-Map/names.json
@@ -1,10 +1,24 @@
{
"A": {
"name": "26/91",
- "icon": "icons/marker/Marker.svg?name=26/91&icon=person&person-org=thw&person-funct=fueh&person-rang=zug&person-text=TZ"
+ "marker.svg": {
+ "person": {
+ "org": "thw",
+ "funct": "fueh",
+ "rang": "zug",
+ "text": "TZ"
+ }
+ }
},
"C": {
"name": "27/92",
- "icon": "icons/marker/Marker.svg?name=27/92&icon=person&person-org=thw&person-funct=fueh&person-rang=trupp&person-text=B1"
+ "marker.svg": {
+ "person": {
+ "org": "thw",
+ "funct": "fueh",
+ "rang": "trupp",
+ "text": "B1"
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Lora-Map/resources/icons/marker/Marker.svg b/Lora-Map/resources/icons/marker/Marker.svg
index 9526606..8638e6d 100644
--- a/Lora-Map/resources/icons/marker/Marker.svg
+++ b/Lora-Map/resources/icons/marker/Marker.svg
@@ -1,6 +1,6 @@
-