See what Tile38 is all about.
go get github.com/xjem/t38c@latest
package main
import (
"fmt"
"github.com/xjem/t38c"
)
func main() {
client, err := t38c.New(t38c.Config{
Address: "localhost:9851",
Debug: true, // print queries to stdout
})
if err != nil {
panic(err)
}
defer client.Close()
if err := client.Keys.Set("fleet", "truck1").Point(33.5123, -112.2693).Do(context.TODO()); err != nil {
panic(err)
}
if err := client.Keys.Set("fleet", "truck2").Point(33.4626, -112.1695).
Field("speed", 20). // optional
Expiration(20). // optional
Do(context.TODO()); err != nil {
panic(err)
}
// search 6 kilometers around a point. returns one truck.
response, err := client.Search.Nearby("fleet", 33.462, -112.268, 6000).
Where("speed", 0, 100).
Match("truck*").
Format(t38c.FormatPoints).
Do(context.TODO())
if err != nil {
panic(err)
}
// truck1 {33.5123 -112.2693}
fmt.Println(response.Points[0].ID, response.Points[0].Point)
}
Source code is available under the MIT License.