func NewGeoState() *GeoState {
	return &GeoState{
		Location: make(map[string]GeoPoint),
	}
}
========== GeoState methods
NewGeoState will return a new state {{{
package geopos
import (
	"fmt"
	"math"
	"math/rand"
	"sync"
)
var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
func rndStr(n int) string {
	rndStr := make([]rune, n)
	for i := range rndStr {
		rndStr[i] = letterRunes[rand.Intn(len(letterRunes))]
	}
	return string(rndStr)
}  
type TokenReq struct {
	Token string `form:"Token" binding:"required"`
}
type DistanceReq struct {
	Distance float64 `form:"Distance" binding:"required"`
}
type GeoPoint struct {
	Type        string     `form:"-"`
	Token       string     `form:"Token" binding:"required"`
	Coordinates [2]float64 `form:"Coordinates" binding:"required"`
}
type GeoState struct {
	Location map[string]GeoPoint `json:"Location"`
	sync.RWMutex
}