code: func (p *Path) ResampleWithGeoInterval(meters float64) *Path {
  	if meters <= 0 {
  		p.PointSet = make([]Point, 0)
  		return p
  	}
  
  	// precomputes the total geo distance and intermediate distances
  	totalDistance := 0.0
  	distances := make([]float64, len(p.PointSet)-1)
  	for i := 0; i < len(p.PointSet)-1; i++ {
  		distances[i] = p.PointSet[i].GeoDistanceFrom(&p.PointSet[i+1])
  		totalDistance += distances[i]
  	}
  
  	totalPoints := int(totalDistance/meters) + 1
  	if p.resampleEdgeCases(totalPoints) {
  		return p
  	}
  
  	p.resample(distances, totalDistance, totalPoints)
  	return p
  }
docs: // ResampleWithGeoInterval converts the path into about evenly spaced points of
  // about the given distance. The total distance is computed using spherical (lng/lat) geometry
  // and divided by the given distance. The new points are chosen by linearly interpolating
  // between two given points. This may not make sense in some contexts, especially if
  // the path covers a large range of latitude.