8个稳定版本
使用旧的Rust 2015
1.0.7 | 2017年8月8日 |
---|---|
1.0.6 | 2017年8月7日 |
1.0.1 | 2017年7月25日 |
0.1.0 | 2017年7月19日 |
#171 in 地理空间
14KB
186 行
纳扎尔
Tile38 是一个开源的(MIT许可证),内存地理定位数据存储、空间索引和实时地理围栏。它支持多种对象类型,包括纬/经点、边界框、XYZ瓦片、Geohashes和GeoJSON。
纳扎尔 是一个Tile38客户端!
API现在有点合理,尽管仍然很奇怪且不稳定。
API将会发生很大变化
安装
在你的 Cargo.toml
文件中,在 [dependencies]
部分添加
[dependencies]
nazar = "1.0.7"
使用 SET
命令
- 使用
GET
命令
use self::nazar::t38::Types::{String, Float};
let n = nazar::t38::Client::from("redis://127.0.0.1:9851");
match n.execute("SET", vec![String("my"), String("home"), Float(23.12), Float(45.343)]) {
Ok(s) => println!("{}", s),
Err(e) => panic!(e)
}
- 新的API用于执行T38命令 -
cmd
,arg
和execute_with_args
。这是一个执行Tile38命令的高层API!
use self::nazar::t38::Types::{String};
let n = nazar::t38::Client::from("redis://127.0.0.1:9851");
match n.execute("GET", vec![String("my"), String("home")]) {
Ok(s) => println!("{}", s),
Err(e) => panic!(e)
}
- 地理围栏功能
let mut n = nazar::t38::Client::from("redis://127.0.0.1:9851");
n.cmd("SET").arg("drivers").arg("qwerty").arg("POINT").arg("23.54").arg("32.74");
match n.execute_with_args() {
Ok(r) => println!("Result {}", r),
Err(e) => panic!(e),
};
- 使用
PING
检查服务器是否活跃。
use nazar::t38::{Client};
let is_live = Client::ping("redis://127.0.0.1:9851");
地理围栏特性
要仅打开地理围栏,建议使用此相关方法 new
let n = nazar::t38::Client::new();
使用 n
打开一个地理围栏
- 使用
open_fence
打开一个静态的FENCE
(当您想与服务器通信时使用此方法)
let work = |msg| {
println!("FENCE updates {:?}", msg);
};
n.open_fence("ws://127.0.0.1:9851", "my_fleet", "12.12", "33.22", "6000", work);
- 使用
open_fence_within
打开一个静态的地理围栏(使用GeoJSON对象类型打开)
let work = |msg| {
println!("FENCE updates {:?}", msg);
};
n.open_fence_within("ws://127.0.0.1:9851", "my_fleet", "qwerty123", vec![vec![12.32, 23.4], vec![22.32, 33.4], vec![42.32, 23.5], vec![12.32, 23.4]], work)
- 使用
open_fence
打开一个静态的地理围栏(当您想与服务器通信时使用此方法)
fn action (out: &nazar::t38::NazarSender, msg: String) {
out.send("OK").unwrap();
println!("{}", msg);
// do stuff with msg
}
//.....
n.open_fence2("ws://127.0.0.1:9851", "my_fleet", "12.12", "33.22", "6000", action);
- 使用
open_fence_within
打开一个静态的地理围栏(使用GeoJSON对象类型打开,当您想与服务器通信时使用此方法)
fn action (out: &nazar::t38::NazarSender, msg: String) {
out.send("OK").unwrap();
println!("{}", msg);
// do stuff with msg
}
//.....
n.open_fence_within2("ws://127.0.0.1:9851", "my_fleet", "qwerty123", vec![vec![12.32, 23.4], vec![22.32, 33.4], vec![42.32, 23.5], vec![12.32, 23.4]], action);
- 使用
open_fence_and_send
打开一个静态的地理围栏(当您想向打开围栏的客户端发送更新时使用此方法)
n.open_fence_and_send("ws://127.0.0.1:9851", "my_fleet", "12.12", "33.22", "6000", client); // client is a NazarSender
- 使用
open_fence_within_and_send
打开一个静态的地理围栏(多边形)(当您想向打开围栏的客户端发送更新时使用此方法)
n.open_fence_within_and_send("ws://127.0.0.1:9851", "my_fleet", "qwerty123", vec![vec![12.32, 23.4], vec![22.32, 33.4], vec![42.32, 23.5], vec![12.32, 23.4]], client); // client is a NazarSender
正在进行中
待办事项
- 创建合理的API。
- 文档
- 漫游
FENCE
依赖项
~7.5MB
~174K SLoC