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 地理空间

MIT 许可证

14KB
186

纳扎尔

nazar

Tile38 是一个开源的(MIT许可证),内存地理定位数据存储、空间索引和实时地理围栏。它支持多种对象类型,包括纬/经点、边界框、XYZ瓦片、Geohashes和GeoJSON。

纳扎尔 是一个Tile38客户端!

API现在有点合理,尽管仍然很奇怪且不稳定。

API将会发生很大变化

安装

在你的 Cargo.toml 文件中,在 [dependencies] 部分添加

[dependencies]
nazar = "1.0.7"

使用 SET 命令

  1. 使用 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)
}

  1. 新的API用于执行T38命令 - cmdargexecute_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)
}
  1. 地理围栏功能
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),
};
  1. 使用 PING 检查服务器是否活跃。
use nazar::t38::{Client};
let is_live = Client::ping("redis://127.0.0.1:9851");

地理围栏特性

要仅打开地理围栏,建议使用此相关方法 new

let n = nazar::t38::Client::new();

使用 n 打开一个地理围栏

  1. 使用 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);
  1. 使用 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)
  1. 使用 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);
  1. 使用 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);
  1. 使用 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
  1. 使用 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

正在进行中

待办事项

  1. 创建合理的API。
  2. 文档
  3. 漫游 FENCE

依赖项

~7.5MB
~174K SLoC