package plat import ( "encoding/json" "fmt" "github.com/fonchain_enterprise/fonchain-main/pkg/config" "io/ioutil" "net/http" "net/url" ) func ExchangeLatLngToAddress(lat, lng string) (*AutoGenerated, error) { // 此处填写您在控制台-应用管理-创建应用后获取的AK appcode := config.MapAppCode // 服务地址 host := "https://latlngto.market.alicloudapi.com" // 接口地址 uri := "/lundroid/queryLocation" // 设置请求参数 params := url.Values{ "lat": []string{lat}, "lng": []string{lng}, } // 发起请求 request, err := url.Parse(host + uri + "?" + params.Encode()) if nil != err { fmt.Printf("host error: %v", err) return nil, err } req, reqErr := http.NewRequest("GET", request.String(), nil) req.Header.Add("Authorization", "APPCODE "+appcode) fmt.Printf("url: %s\n", request.String()) if reqErr != nil { fmt.Printf("request error: %v", reqErr) return nil, err } resp, respErr := (&http.Client{}).Do(req) defer resp.Body.Close() if respErr != nil { fmt.Printf("resp error: %v", respErr) return nil, err } body, bodyErr := ioutil.ReadAll(resp.Body) if bodyErr != nil { fmt.Printf("readAll error: %v", bodyErr) return nil, err } fmt.Println(resp.Header) data := AutoGenerated{} err = json.Unmarshal(body, &data) if err != nil { fmt.Println(err) return nil, err } return &data, err } type LatLng struct { Lat string `json:"lat"` Lng string `json:"lng"` } type AutoGenerated struct { Data Data `json:"data"` Resp Resp `json:"resp"` } type Location struct { Lng float64 `json:"lng"` Lat float64 `json:"lat"` } type Town struct { Distance int `json:"distance"` Direction string `json:"direction"` Location Location `json:"location"` Name string `json:"name"` } type StreetNumber struct { Distance float64 `json:"distance"` Direction string `json:"direction"` Location Location `json:"location"` Name string `json:"name"` } type LandmarkL2 struct { Distance float64 `json:"distance"` Direction string `json:"direction"` Location Location `json:"location"` Name string `json:"name"` } type LandmarkL1 struct { Distance float64 `json:"distance"` Direction string `json:"direction"` Location Location `json:"location"` Name string `json:"name"` } type Crossroad struct { Distance float64 `json:"distance"` Direction string `json:"direction"` Location Location `json:"location"` Name string `json:"name"` } type Street struct { Distance float64 `json:"distance"` Direction string `json:"direction"` Location Location `json:"location"` Name string `json:"name"` } type Reference struct { Town Town `json:"town"` StreetNumber StreetNumber `json:"street_number"` LandmarkL2 LandmarkL2 `json:"landmark_l2"` LandmarkL1 LandmarkL1 `json:"landmark_l1"` Crossroad Crossroad `json:"crossroad"` Street Street `json:"street"` } type Data struct { Nation string `json:"nation"` City string `json:"city"` Province string `json:"province"` Reference Reference `json:"reference"` District string `json:"district"` Street string `json:"street"` Address string `json:"address"` Lat float64 `json:"lat"` StreetNumber string `json:"street_number"` Lng float64 `json:"lng"` } type Resp struct { RespCode int `json:"RespCode"` RespMsg string `json:"RespMsg"` }