package participanthandler import ( "log" "math" "time" ) // degreesToRadians konvertiert Grad in Radiant. // degrees: Der Winkel in Grad. // Rückgabewert: Der Winkel in Radiant. func degreesToRadians(degrees float64) float64 { return degrees * (math.Pi / 180) } // ChangePosition ändert die Position eines Geräts. // equipmentNumber: Die Nummer des Geräts, dessen Position geändert werden soll. // geoPosition: Die neue geografische Position des Geräts. // Rückgabewert: Gibt einen Fehler zurück, falls die Änderung fehlschlägt. func (c *ParticipantHandler) ChangePosition(equipmentNumber int, geoPosition *GeoPosition) error { log.Println(equipmentNumber, geoPosition) // Erstellen einer Anfrage zur Änderung der Position req := PositionChangeRequest{ Data: struct { Header struct { EquipmentNumber int `json:"equipmentNumber"` TimeStamp int `json:"timeStamp"` } `json:"header"` GeoPosition struct { Lon float64 `json:"lon"` Lat float64 `json:"lat"` Z float64 `json:"z"` } `json:"geoPosition"` }{ Header: struct { EquipmentNumber int `json:"equipmentNumber"` TimeStamp int `json:"timeStamp"` }{ EquipmentNumber: equipmentNumber, TimeStamp: int(time.Now().UnixMilli()), }, GeoPosition: struct { Lon float64 `json:"lon"` Lat float64 `json:"lat"` Z float64 `json:"z"` }{ Lon: degreesToRadians(geoPosition.Lng), Lat: degreesToRadians(geoPosition.Lat), Z: 0.0, }, }, TypeID: 21, } // Senden der Anfrage über den MariusSocket if err := c.MariusSocket.WriteJSON(req); err != nil { return err } return nil }