nidus-sync/stadia/reverse_geocode.go
Eli Ribble e2af49a323
Make lead creation and invalidation for public reports work
The only thing wrong at this point that I can tell is that address
aren't being correctly populated when I reverse geocode.
2026-03-14 01:14:30 +00:00

49 lines
1.4 KiB
Go

package stadia
import (
"context"
"fmt"
"github.com/google/go-querystring/query"
)
type RequestReverseGeocode struct {
Latitude float64 `url:"point.lat" json:"point.lat"`
Longitude float64 `url:"point.lon" json:"point.lon"`
// Boundary circle parameters
BoundaryCircleRadius *float64 `url:"boundary.circle.radius,omitempty"`
BoundaryCountry []string `url:"boundary.country,omitempty"`
BoundaryGID string `url:"boundary.gid,omitempty"`
// Other parameters
Layers []string `url:"layers,omitempty,comma" json:"layers,omitempty"`
Size *int `url:"size,omitempty" json:"size,omitempty"`
Sources []string `url:"sources,omitempty,comma" json:"sources,omitempty"`
}
func (s *StadiaMaps) ReverseGeocode(ctx context.Context, req RequestReverseGeocode) (*GeocodeResponse, error) {
// https://docs.stadiamaps.com/geocoding-search-autocomplete/reverse-search/
var result GeocodeResponse
query, err := query.Values(req)
if err != nil {
return nil, fmt.Errorf("reverse geocode query: %w", err)
}
//var api_error Error
resp, err := s.client.R().
SetQueryParamsFromValues(query).
SetContext(ctx).
SetResult(&result).
SetPathParam("urlBase", s.urlBase).
SetQueryParam("api_key", s.APIKey).
Get("https://{urlBase}/geocoding/v2/reverse")
if err != nil {
return nil, fmt.Errorf("reverse geocoding get: %w", err)
}
if !resp.IsSuccess() {
return nil, parseError(resp)
}
return &result, nil
}