LucaTheHacker / go-haversine

Go package to nicely calculate distance between coordinates using the Haversine formula.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

go-haversine

Heavily inspired by Umahmood's haversine, go-haversine provides a nice Go interface to calculate distance between coordinates using the haversine formula.

Instead of returning two values for both Kilometers and Miles, go-haversine returns a struct that contains the parameter "C" used to calculate the distance.
This allows the developer to do calculation optimization and result caching, and also to use the package directly in a function call, without using variables assignment.

Usage

package main

import (
	"log"
	
	"github.com/LucaTheHacker/go-haversine"
)

func main() {
	oxford := haversine.Coordinates{
		Latitude:  51.45,
		Longitude: 1.15,
	}
	turin := haversine.Coordinates{
		Latitude:  45.04,
		Longitude: 7.42,
	}
	
	result := haversine.Distance(oxford, turin)
	log.Printf(
		"Oxford and Turin are %.2fkm (%d meters) away.",
		result.Kilometers(), int(result.Kilometers()*1000),
	)
	
	// I'm in a hurry method
	log.Printf(
		"Oxford and Turin are %.2fkm away.",
		haversine.Distance(
			haversine.NewCoordinates(51.45, 1.15),
			haversine.NewCoordinates(45.04, 7.42),
		).Kilometers(),
	)
}

About

Go package to nicely calculate distance between coordinates using the Haversine formula.

License:MIT License


Languages

Language:Go 100.0%