#include #include namespace bg = boost::geometry; typedef bg::model::point > pt; typedef bg::model::linestring pt_line; int main() { const double earthRadius = 6371.0 * 1000.0; pt oslo(10.733557, 59.911923); pt sandvika(10.521812, 59.887214); pt trondheim(10.4, 63.43); // works correct double d1 = bg::distance(sandvika, trondheim, bg::strategy::distance::haversine(earthRadius)); double d2 = bg::distance(oslo, trondheim, bg::strategy::distance::haversine(earthRadius)); std::cout << "Sandvika-Trondheim " << d1 << std::endl; std::cout << "Oslo-Trondheim " << d2 << std::endl; pt_line ll; ll.push_back(oslo); ll.push_back(sandvika); // Does not work double d3 = bg::distance(trondheim, ll, bg::strategy::distance::haversine(earthRadius)); std::cout << "Oslo-Sandvika - Trondheim " << d3 << std::endl; return 0; }