Beispiel #1
0
// decodeLocations takes a location argument string and decodes it.
// This argument has three different forms, as per documentation at
// https://developers.google.com/maps/documentation/elevation/#Locations
func decodeLocations(location string) ([]maps.LatLng, error) {
	if strings.HasPrefix(location, "enc:") {
		return maps.DecodePolyline(location[len("enc:"):]), nil
	}

	if strings.Contains(location, "|") {
		return maps.ParseLatLngList(location)
	}

	// single location
	ll, err := maps.ParseLatLng(location)
	check(err)
	return []maps.LatLng{ll}, nil
}
Beispiel #2
0
// decodePath takes a location argument string and decodes it.
// This argument has two different forms, as per documentation at
// https://developers.google.com/maps/documentation/elevation/#Paths
func decodePath(path string) ([]maps.LatLng, error) {
	if strings.HasPrefix(path, "enc:") {
		return maps.DecodePolyline(path[len("enc:"):]), nil
	}
	result := []maps.LatLng{}
	if strings.Contains(path, "|") {
		// | delimited list of locations
		ls := strings.Split(path, "|")
		for _, l := range ls {
			ll, err := maps.ParseLatLng(l)
			check(err)
			result = append(result, ll)
		}
		return result, nil
	}
	return result, fmt.Errorf("Invalid Path argument: '%s'", path)
}