123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package amap
- import (
- "cold-delivery/conf"
- "encoding/json"
- "fmt"
- "github.com/go-resty/resty/v2"
- "strconv"
- )
- type Address struct {
- Status string `json:"status"`
- Regeocode Regeocode `json:"regeocode"`
- Info string `json:"info"`
- Infocode string `json:"infocode"`
- }
- type Regeocode struct {
- AddressComponent AddressComponent `json:"addressComponent"`
- FormattedAddress string `json:"formatted_address"`
- }
- type AddressComponent struct {
- City string `json:"city"`
- Province string `json:"province"`
- Adcode string `json:"adcode"`
- District string `json:"district"`
- Township string `json:"township"`
- StreetNumber StreetNumber `json:"streetNumber"`
- Country string `json:"country"`
- Citycode string `json:"citycode"`
- }
- type StreetNumber struct {
- Number string `json:"number"`
- Location string `json:"location"`
- Direction string `json:"direction"`
- Distance string `json:"distance"`
- Street string `json:"street"`
- }
- // 高德-逆地址解析
- func GeocodeRegeo(lng, lat string) (address Address) {
- if len(lng) == 0 || len(lat) == 0 {
- return
- }
- lngFloat64, err := strconv.ParseFloat(lng, 64)
- if err != nil {
- return
- }
- lngStr := fmt.Sprintf("%.6f", lngFloat64)
- latFloat64, err := strconv.ParseFloat(lat, 64)
- if err != nil {
- return
- }
- latStr := fmt.Sprintf("%.6f", latFloat64)
- client := resty.New()
- resp, err := client.R().SetQueryParams(map[string]string{
- "key": conf.ExtConfig.Amap.Key,
- "location": lngStr + "," + latStr,
- }).Get("https://restapi.amap.com/v3/geocode/regeo")
- if err != nil {
- return
- }
- err = json.Unmarshal(resp.Body(), &address)
- if err != nil {
- return
- }
- return address
- }
|