parent
535d75c175
commit
2bb6fd0d2e
@ -1,5 +1,5 @@
|
|||||||
package go_library
|
package go_library
|
||||||
|
|
||||||
func Version() string {
|
func Version() string {
|
||||||
return "1.0.129"
|
return "1.0.130"
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
package amap
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/dtapps/go-library/utils/gojson"
|
||||||
|
"github.com/dtapps/go-library/utils/gorequest"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GeocodeGeoResponse struct {
|
||||||
|
Status string `json:"status"`
|
||||||
|
Info string `json:"info"`
|
||||||
|
Infocode string `json:"infocode"`
|
||||||
|
Count string `json:"count"`
|
||||||
|
Geocodes []struct {
|
||||||
|
FormattedAddress string `json:"formatted_address"`
|
||||||
|
Country string `json:"country"`
|
||||||
|
Province string `json:"province"`
|
||||||
|
Citycode string `json:"citycode"`
|
||||||
|
City string `json:"city"`
|
||||||
|
District string `json:"district"`
|
||||||
|
Township []interface{} `json:"township"`
|
||||||
|
Neighborhood struct {
|
||||||
|
Name []interface{} `json:"name"`
|
||||||
|
Type []interface{} `json:"type"`
|
||||||
|
} `json:"neighborhood"`
|
||||||
|
Building struct {
|
||||||
|
Name []interface{} `json:"name"`
|
||||||
|
Type []interface{} `json:"type"`
|
||||||
|
} `json:"building"`
|
||||||
|
Adcode string `json:"adcode"`
|
||||||
|
Street string `json:"street"`
|
||||||
|
Number string `json:"number"`
|
||||||
|
Location string `json:"location"`
|
||||||
|
Level string `json:"level"`
|
||||||
|
} `json:"geocodes"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GeocodeGeoResult struct {
|
||||||
|
Result GeocodeGeoResponse // 结果
|
||||||
|
Body []byte // 内容
|
||||||
|
Http gorequest.Response // 请求
|
||||||
|
}
|
||||||
|
|
||||||
|
func newGeocodeGeoResult(result GeocodeGeoResponse, body []byte, http gorequest.Response) *GeocodeGeoResult {
|
||||||
|
return &GeocodeGeoResult{Result: result, Body: body, Http: http}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GeocodeGeo 地理编码
|
||||||
|
// https://lbs.amap.com/api/webservice/guide/api/georegeo
|
||||||
|
func (c *Client) GeocodeGeo(ctx context.Context, address string, notMustParams ...gorequest.Params) (*GeocodeGeoResult, error) {
|
||||||
|
// 参数
|
||||||
|
params := gorequest.NewParamsWith(notMustParams...)
|
||||||
|
params.Set("key", c.GetKey())
|
||||||
|
params.Set("address", address)
|
||||||
|
params.Set("output", "JSON")
|
||||||
|
// 请求
|
||||||
|
request, err := c.request(ctx, apiUrl+"/geocode/geo", params, http.MethodGet)
|
||||||
|
if err != nil {
|
||||||
|
return newGeocodeGeoResult(GeocodeGeoResponse{}, request.ResponseBody, request), err
|
||||||
|
}
|
||||||
|
// 定义
|
||||||
|
var response GeocodeGeoResponse
|
||||||
|
err = gojson.Unmarshal(request.ResponseBody, &response)
|
||||||
|
return newGeocodeGeoResult(response, request.ResponseBody, request), err
|
||||||
|
}
|
@ -0,0 +1,113 @@
|
|||||||
|
package amap
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/dtapps/go-library/utils/gojson"
|
||||||
|
"github.com/dtapps/go-library/utils/gorequest"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GeocodeRegeoResponse struct {
|
||||||
|
Status string `json:"status"`
|
||||||
|
Regeocode struct {
|
||||||
|
Roads []struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Location string `json:"location"`
|
||||||
|
Direction string `json:"direction"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Distance string `json:"distance"`
|
||||||
|
} `json:"roads"`
|
||||||
|
Roadinters []struct {
|
||||||
|
SecondName string `json:"second_name"`
|
||||||
|
FirstId string `json:"first_id"`
|
||||||
|
SecondId string `json:"second_id"`
|
||||||
|
Location string `json:"location"`
|
||||||
|
Distance string `json:"distance"`
|
||||||
|
FirstName string `json:"first_name"`
|
||||||
|
Direction string `json:"direction"`
|
||||||
|
} `json:"roadinters"`
|
||||||
|
FormattedAddress string `json:"formatted_address"`
|
||||||
|
AddressComponent struct {
|
||||||
|
City []interface{} `json:"city"`
|
||||||
|
Province string `json:"province"`
|
||||||
|
Adcode string `json:"adcode"`
|
||||||
|
District string `json:"district"`
|
||||||
|
Towncode string `json:"towncode"`
|
||||||
|
StreetNumber struct {
|
||||||
|
Number string `json:"number"`
|
||||||
|
Location string `json:"location"`
|
||||||
|
Direction string `json:"direction"`
|
||||||
|
Distance string `json:"distance"`
|
||||||
|
Street string `json:"street"`
|
||||||
|
} `json:"streetNumber"`
|
||||||
|
Country string `json:"country"`
|
||||||
|
Township string `json:"township"`
|
||||||
|
BusinessAreas []struct {
|
||||||
|
Location string `json:"location"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Id string `json:"id"`
|
||||||
|
} `json:"businessAreas"`
|
||||||
|
Building struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
} `json:"building"`
|
||||||
|
Neighborhood struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
} `json:"neighborhood"`
|
||||||
|
Citycode string `json:"citycode"`
|
||||||
|
} `json:"addressComponent"`
|
||||||
|
Aois []struct {
|
||||||
|
Area string `json:"area"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Id string `json:"id"`
|
||||||
|
Location string `json:"location"`
|
||||||
|
Adcode string `json:"adcode"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Distance string `json:"distance"`
|
||||||
|
} `json:"aois"`
|
||||||
|
Pois []struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Direction string `json:"direction"`
|
||||||
|
Businessarea string `json:"businessarea"`
|
||||||
|
Address string `json:"address"`
|
||||||
|
Poiweight string `json:"poiweight"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Location string `json:"location"`
|
||||||
|
Distance string `json:"distance"`
|
||||||
|
Tel interface{} `json:"tel"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
} `json:"pois"`
|
||||||
|
} `json:"regeocode"`
|
||||||
|
Info string `json:"info"`
|
||||||
|
Infocode string `json:"infocode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GeocodeRegeoResult struct {
|
||||||
|
Result GeocodeRegeoResponse // 结果
|
||||||
|
Body []byte // 内容
|
||||||
|
Http gorequest.Response // 请求
|
||||||
|
}
|
||||||
|
|
||||||
|
func newGeocodeRegeoResult(result GeocodeRegeoResponse, body []byte, http gorequest.Response) *GeocodeRegeoResult {
|
||||||
|
return &GeocodeRegeoResult{Result: result, Body: body, Http: http}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GeocodeRegeo 逆地理编码
|
||||||
|
// https://lbs.amap.com/api/webservice/guide/api/georegeo
|
||||||
|
func (c *Client) GeocodeRegeo(ctx context.Context, location string, notMustParams ...gorequest.Params) (*GeocodeRegeoResult, error) {
|
||||||
|
// 参数
|
||||||
|
params := gorequest.NewParamsWith(notMustParams...)
|
||||||
|
params.Set("key", c.GetKey())
|
||||||
|
params.Set("location", location)
|
||||||
|
params.Set("output", "JSON")
|
||||||
|
// 请求
|
||||||
|
request, err := c.request(ctx, apiUrl+"/geocode/regeo", params, http.MethodGet)
|
||||||
|
if err != nil {
|
||||||
|
return newGeocodeRegeoResult(GeocodeRegeoResponse{}, request.ResponseBody, request), err
|
||||||
|
}
|
||||||
|
// 定义
|
||||||
|
var response GeocodeRegeoResponse
|
||||||
|
err = gojson.Unmarshal(request.ResponseBody, &response)
|
||||||
|
return newGeocodeRegeoResult(response, request.ResponseBody, request), err
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
package baidu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/dtapps/go-library/utils/gojson"
|
||||||
|
"github.com/dtapps/go-library/utils/gorequest"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GeocodingResponse struct {
|
||||||
|
Status int `json:"status"`
|
||||||
|
Result struct {
|
||||||
|
Location struct {
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
} `json:"location"`
|
||||||
|
Precise int `json:"precise"`
|
||||||
|
Confidence int `json:"confidence"`
|
||||||
|
Comprehension int `json:"comprehension"`
|
||||||
|
Level string `json:"level"`
|
||||||
|
} `json:"result"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GeocodingResult struct {
|
||||||
|
Result GeocodingResponse // 结果
|
||||||
|
Body []byte // 内容
|
||||||
|
Http gorequest.Response // 请求
|
||||||
|
}
|
||||||
|
|
||||||
|
func newGeocodingResult(result GeocodingResponse, body []byte, http gorequest.Response) *GeocodingResult {
|
||||||
|
return &GeocodingResult{Result: result, Body: body, Http: http}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Geocoding 地理编码服务
|
||||||
|
// https://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
|
||||||
|
func (c *Client) Geocoding(ctx context.Context, address string, notMustParams ...gorequest.Params) (*GeocodingResult, error) {
|
||||||
|
// 参数
|
||||||
|
params := gorequest.NewParamsWith(notMustParams...)
|
||||||
|
params.Set("ak", c.GetAk())
|
||||||
|
params.Set("address", address)
|
||||||
|
params.Set("output", "json")
|
||||||
|
// 请求
|
||||||
|
request, err := c.request(ctx, apiUrl+"/geocoding/v3/", params, http.MethodGet)
|
||||||
|
if err != nil {
|
||||||
|
return newGeocodingResult(GeocodingResponse{}, request.ResponseBody, request), err
|
||||||
|
}
|
||||||
|
// 定义
|
||||||
|
var response GeocodingResponse
|
||||||
|
err = gojson.Unmarshal(request.ResponseBody, &response)
|
||||||
|
return newGeocodingResult(response, request.ResponseBody, request), err
|
||||||
|
}
|
@ -0,0 +1,71 @@
|
|||||||
|
package baidu
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/dtapps/go-library/utils/gojson"
|
||||||
|
"github.com/dtapps/go-library/utils/gorequest"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ReverseGeocodingResponse struct {
|
||||||
|
Status int `json:"status"`
|
||||||
|
Result struct {
|
||||||
|
Location struct {
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
} `json:"location"`
|
||||||
|
FormattedAddress string `json:"formatted_address"`
|
||||||
|
Business string `json:"business"`
|
||||||
|
AddressComponent struct {
|
||||||
|
Country string `json:"country"`
|
||||||
|
CountryCode int `json:"country_code"`
|
||||||
|
CountryCodeIso string `json:"country_code_iso"`
|
||||||
|
CountryCodeIso2 string `json:"country_code_iso2"`
|
||||||
|
Province string `json:"province"`
|
||||||
|
City string `json:"city"`
|
||||||
|
CityLevel int `json:"city_level"`
|
||||||
|
District string `json:"district"`
|
||||||
|
Town string `json:"town"`
|
||||||
|
TownCode string `json:"town_code"`
|
||||||
|
Distance string `json:"distance"`
|
||||||
|
Direction string `json:"direction"`
|
||||||
|
Adcode string `json:"adcode"`
|
||||||
|
Street string `json:"street"`
|
||||||
|
StreetNumber string `json:"street_number"`
|
||||||
|
} `json:"addressComponent"`
|
||||||
|
Pois []interface{} `json:"pois"`
|
||||||
|
Roads []interface{} `json:"roads"`
|
||||||
|
PoiRegions []interface{} `json:"poiRegions"`
|
||||||
|
SematicDescription string `json:"sematic_description"`
|
||||||
|
CityCode int `json:"cityCode"`
|
||||||
|
} `json:"result"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ReverseGeocodingResult struct {
|
||||||
|
Result ReverseGeocodingResponse // 结果
|
||||||
|
Body []byte // 内容
|
||||||
|
Http gorequest.Response // 请求
|
||||||
|
}
|
||||||
|
|
||||||
|
func newReverseGeocodingResult(result ReverseGeocodingResponse, body []byte, http gorequest.Response) *ReverseGeocodingResult {
|
||||||
|
return &ReverseGeocodingResult{Result: result, Body: body, Http: http}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReverseGeocoding 全球逆地理编码服务
|
||||||
|
// https://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
|
||||||
|
func (c *Client) ReverseGeocoding(ctx context.Context, location string, notMustParams ...gorequest.Params) (*ReverseGeocodingResult, error) {
|
||||||
|
// 参数
|
||||||
|
params := gorequest.NewParamsWith(notMustParams...)
|
||||||
|
params.Set("ak", c.GetAk())
|
||||||
|
params.Set("location", location)
|
||||||
|
params.Set("output", "json")
|
||||||
|
// 请求
|
||||||
|
request, err := c.request(ctx, apiUrl+"/reverse_geocoding/v3/", params, http.MethodGet)
|
||||||
|
if err != nil {
|
||||||
|
return newReverseGeocodingResult(ReverseGeocodingResponse{}, request.ResponseBody, request), err
|
||||||
|
}
|
||||||
|
// 定义
|
||||||
|
var response ReverseGeocodingResponse
|
||||||
|
err = gojson.Unmarshal(request.ResponseBody, &response)
|
||||||
|
return newReverseGeocodingResult(response, request.ResponseBody, request), err
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package qq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/dtapps/go-library/utils/gojson"
|
||||||
|
"github.com/dtapps/go-library/utils/gorequest"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GeocoderAddressResponse struct {
|
||||||
|
Status int `json:"status"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
Result struct {
|
||||||
|
Title string `json:"title"`
|
||||||
|
Location struct {
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
} `json:"location"`
|
||||||
|
AdInfo struct {
|
||||||
|
Adcode string `json:"adcode"`
|
||||||
|
} `json:"ad_info"`
|
||||||
|
AddressComponents struct {
|
||||||
|
Province string `json:"province"`
|
||||||
|
City string `json:"city"`
|
||||||
|
District string `json:"district"`
|
||||||
|
Street string `json:"street"`
|
||||||
|
StreetNumber string `json:"street_number"`
|
||||||
|
} `json:"address_components"`
|
||||||
|
Similarity float64 `json:"similarity"`
|
||||||
|
Deviation int `json:"deviation"`
|
||||||
|
Reliability int `json:"reliability"`
|
||||||
|
Level int `json:"level"`
|
||||||
|
} `json:"result"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GeocoderAddressResult struct {
|
||||||
|
Result GeocoderAddressResponse // 结果
|
||||||
|
Body []byte // 内容
|
||||||
|
Http gorequest.Response // 请求
|
||||||
|
}
|
||||||
|
|
||||||
|
func newGeocoderAddressResult(result GeocoderAddressResponse, body []byte, http gorequest.Response) *GeocoderAddressResult {
|
||||||
|
return &GeocoderAddressResult{Result: result, Body: body, Http: http}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GeocoderAddress 地址解析(地址转坐标)
|
||||||
|
// https://lbs.qq.com/service/webService/webServiceGuide/webServiceGeocoder
|
||||||
|
func (c *Client) GeocoderAddress(ctx context.Context, address string, notMustParams ...gorequest.Params) (*GeocoderAddressResult, error) {
|
||||||
|
// 参数
|
||||||
|
params := gorequest.NewParamsWith(notMustParams...)
|
||||||
|
params.Set("key", c.GetKey())
|
||||||
|
params.Set("address", address)
|
||||||
|
params.Set("output", "JSON")
|
||||||
|
// 请求
|
||||||
|
request, err := c.request(ctx, apiUrl+"/ws/geocoder/v1/", params, http.MethodGet)
|
||||||
|
if err != nil {
|
||||||
|
return newGeocoderAddressResult(GeocoderAddressResponse{}, request.ResponseBody, request), err
|
||||||
|
}
|
||||||
|
// 定义
|
||||||
|
var response GeocoderAddressResponse
|
||||||
|
err = gojson.Unmarshal(request.ResponseBody, &response)
|
||||||
|
return newGeocoderAddressResult(response, request.ResponseBody, request), err
|
||||||
|
}
|
@ -0,0 +1,168 @@
|
|||||||
|
package qq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/dtapps/go-library/utils/gojson"
|
||||||
|
"github.com/dtapps/go-library/utils/gorequest"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GeocoderLocationResponse struct {
|
||||||
|
Status int `json:"status"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
RequestId string `json:"request_id"`
|
||||||
|
Result struct {
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
Address string `json:"address"`
|
||||||
|
FormattedAddresses struct {
|
||||||
|
Recommend string `json:"recommend"`
|
||||||
|
Rough string `json:"rough"`
|
||||||
|
} `json:"formatted_addresses"`
|
||||||
|
AddressComponent struct {
|
||||||
|
Nation string `json:"nation"`
|
||||||
|
Province string `json:"province"`
|
||||||
|
City string `json:"city"`
|
||||||
|
District string `json:"district"`
|
||||||
|
Street string `json:"street"`
|
||||||
|
StreetNumber string `json:"street_number"`
|
||||||
|
} `json:"address_component"`
|
||||||
|
AdInfo struct {
|
||||||
|
NationCode string `json:"nation_code"`
|
||||||
|
Adcode string `json:"adcode"`
|
||||||
|
PhoneAreaCode string `json:"phone_area_code"`
|
||||||
|
CityCode string `json:"city_code"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
Nation string `json:"nation"`
|
||||||
|
Province string `json:"province"`
|
||||||
|
City string `json:"city"`
|
||||||
|
District string `json:"district"`
|
||||||
|
} `json:"ad_info"`
|
||||||
|
AddressReference struct {
|
||||||
|
BusinessArea struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
Distance int `json:"_distance"`
|
||||||
|
DirDesc string `json:"_dir_desc"`
|
||||||
|
} `json:"business_area"`
|
||||||
|
FamousArea struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
Distance int `json:"_distance"`
|
||||||
|
DirDesc string `json:"_dir_desc"`
|
||||||
|
} `json:"famous_area"`
|
||||||
|
Crossroad struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
Distance float64 `json:"_distance"`
|
||||||
|
DirDesc string `json:"_dir_desc"`
|
||||||
|
} `json:"crossroad"`
|
||||||
|
Town struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
Distance int `json:"_distance"`
|
||||||
|
DirDesc string `json:"_dir_desc"`
|
||||||
|
} `json:"town"`
|
||||||
|
StreetNumber struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
Distance float64 `json:"_distance"`
|
||||||
|
DirDesc string `json:"_dir_desc"`
|
||||||
|
} `json:"street_number"`
|
||||||
|
Street struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
Distance float64 `json:"_distance"`
|
||||||
|
DirDesc string `json:"_dir_desc"`
|
||||||
|
} `json:"street"`
|
||||||
|
LandmarkL2 struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
Distance int `json:"_distance"`
|
||||||
|
DirDesc string `json:"_dir_desc"`
|
||||||
|
} `json:"landmark_l2"`
|
||||||
|
} `json:"address_reference"`
|
||||||
|
PoiCount int `json:"poi_count"`
|
||||||
|
Pois []struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
Title string `json:"title"`
|
||||||
|
Address string `json:"address"`
|
||||||
|
Category string `json:"category"`
|
||||||
|
Location struct {
|
||||||
|
Lat float64 `json:"lat"`
|
||||||
|
Lng float64 `json:"lng"`
|
||||||
|
} `json:"location"`
|
||||||
|
AdInfo struct {
|
||||||
|
Adcode string `json:"adcode"`
|
||||||
|
Province string `json:"province"`
|
||||||
|
City string `json:"city"`
|
||||||
|
District string `json:"district"`
|
||||||
|
} `json:"ad_info"`
|
||||||
|
Distance float64 `json:"_distance"`
|
||||||
|
DirDesc string `json:"_dir_desc,omitempty"`
|
||||||
|
} `json:"pois"`
|
||||||
|
} `json:"result"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type GeocoderLocationResult struct {
|
||||||
|
Result GeocoderLocationResponse // 结果
|
||||||
|
Body []byte // 内容
|
||||||
|
Http gorequest.Response // 请求
|
||||||
|
}
|
||||||
|
|
||||||
|
func newGeocoderLocationResult(result GeocoderLocationResponse, body []byte, http gorequest.Response) *GeocoderLocationResult {
|
||||||
|
return &GeocoderLocationResult{Result: result, Body: body, Http: http}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GeocoderLocation 逆地址解析(坐标位置描述)
|
||||||
|
// https://lbs.qq.com/service/webService/webServiceGuide/webServiceGcoder
|
||||||
|
func (c *Client) GeocoderLocation(ctx context.Context, location string, notMustParams ...gorequest.Params) (*GeocoderLocationResult, error) {
|
||||||
|
// 参数
|
||||||
|
params := gorequest.NewParamsWith(notMustParams...)
|
||||||
|
params.Set("key", c.GetKey())
|
||||||
|
params.Set("location", location)
|
||||||
|
params.Set("output", "JSON")
|
||||||
|
// 请求
|
||||||
|
request, err := c.request(ctx, apiUrl+"/ws/geocoder/v1/", params, http.MethodGet)
|
||||||
|
if err != nil {
|
||||||
|
return newGeocoderLocationResult(GeocoderLocationResponse{}, request.ResponseBody, request), err
|
||||||
|
}
|
||||||
|
// 定义
|
||||||
|
var response GeocoderLocationResponse
|
||||||
|
err = gojson.Unmarshal(request.ResponseBody, &response)
|
||||||
|
return newGeocoderLocationResult(response, request.ResponseBody, request), err
|
||||||
|
}
|
Loading…
Reference in new issue