基本的には、https://tile38.com/topics/geofencing/ と同じことをやっただけ
(Step 1)サーバを立ち上げる
C:\Users\ebata>docker run -p 9851:9851 tile38/tile38
(Step 2)1つ目のターミナルを上げる
F:\しゅらばしゅう\tile38-master>docker run --net=host -it tile38/tile38 tile38-cli
127.0.0.1:9851> SETCHAN warehouse NEARBY fleet FENCE POINT 33.462 -112.268 6000
{"ok":true,"elapsed":"41.5µs"}
127.0.0.1:9851> SUBSCRIBE warehouse
{"ok":true,"command":"subscribe","channel":"warehouse","num":1,"elapsed":"4.4µs"}
(Step 3)2つ目のターミナルを上げる
$ winpty docker run --net=host -it tile38/tile38 tile38-cli
(Step 4)2つ目のターミナルから座標を入力する
127.0.0.1:9851> SET fleet bus POINT 33.460 -112.260
{"ok":true,"elapsed":"61.7µs"}
1つ目のターミナルに以下が表示される。
{
"command":"set",
← (A)
"group":"5ed3c9a30a24b900011ea4a8",
"detect":"enter",
←(B)
"hook":"warehouse",
"key":"fleet",
"time":"2020-05-31T15:13:39.296483124Z",
"id":"bus",
"object":{"type":"Point","coordinates":[-112.26,33.46]}
}
(A)
del:フェンスで囲まれているコレクションからオブジェクトが削除されたことをクライアントに通知します。
drop:コレクション全体が削除されたことをクライアントに通知します。
set:オブジェクトが追加または更新されたことをクライアントに通知します。
(B)
inside:オブジェクトが指定された領域の内側にあるときです。
outside:オブジェクトが指定されたエリアの外にあるときです。
enter:以前はフェンスの中にいなかったオブジェクトがエリアに入ったときです。
exit:以前フェンスの中にいたオブジェクトがエリアから出たときです。
cross:以前はフェンスの中になかったオブジェクトがエリアに入り、エリアを出たときです。
ところで、
$ SETCHAN warehouse NEARBY fleet FENCE DETECT inside,outside POINT 33.462 -112.268 6000
とか、指定することを可能。
また、例えば COMMANDS オプションを使用することで、どのコマンドを返すかをマスクすることも可能です。以下は、これは、setコマンドのenter検出のみを行うことを指定します。
$ SETCHAN warehouse NEARBY fleet FENCE DETECT enter
COMMANDS set POINT 33.462 -112.268 6000