我有来自MQTT的消息,它提供了lat和long坐标,我想在节点红色的世界地图上绘制它。
我很困惑如何在地图上显示标记由lat long请帮助。
我在ui iframe中使用了世界地图 - 在菜单下(右上角) - 导入 - 示例 - 世界地图
坐标在节点红色调试选项卡和控制台中如下所示:
object
topic: "location"
payload: "1,18.392378,76.593338,284.8"
qos: 0
retain: false
_msgid: "68d05896.c67388"
在调试选项卡中看:
location : msg.payload : string[27]
"0,18.394644,76.592491,224.7"
我想像这样转换它
{name:"Art", lat:18.394606, lon:76.592514}
在世界地图中显示制造商
您有几种方法可以实现这一目标。
如果您熟悉JavaScript,则可以使用简单的函数节点。或者,您可以使用JSONata更改节点。
以下是使用两种方法进行比较的示例流程:
[{"id":"7bc85438.5f05ac","type":"inject","z":"20e74d1e.f19692","name":"","topic":"","payload":"1,18.392378,76.593338,284.8","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":270,"y":560,"wires":[["923f0b9f.df87a8","87b267.8abfbd98"]]},{"id":"47bffe32.1be6f","type":"debug","z":"20e74d1e.f19692","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":630,"y":560,"wires":[]},{"id":"923f0b9f.df87a8","type":"function","z":"20e74d1e.f19692","name":"","func":"\nlet coord = msg.payload.split(',');\n\n\nmsg.payload = {\n name:\"Art\", \n lat: coord[1], \n lon: coord[2]\n}\n\nreturn msg;","outputs":1,"noerr":0,"x":390,"y":560,"wires":[["47bffe32.1be6f"]]},{"id":"87b267.8abfbd98","type":"change","z":"20e74d1e.f19692","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"(\t $coord := $split(payload, ',');\t \t {\t \"name\":\"Art\", \t \"lat\": $coord[1], \t \"lon\": $coord[2]\t }\t)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":420,"y":600,"wires":[["47bffe32.1be6f"]]}]
let coord = msg.payload.split(',');
msg.payload = {
name:"Art",
lat: coord[1],
lon: coord[2]
}
return msg;
(
$coord := $split(payload, ',');
{
"name":"Art",
"lat": $coord[1],
"lon": $coord[2]
}
)