通过地址获取经纬度和城市明细
背景:居然需要为上百个地址信息添加对应的经纬度,没办法了,只能让程序帮忙完成了。1、腾讯地图上的经纬度2、程序使用golang编写步骤:1、在腾讯地图注册并开启WebServiceAPI2、golang程序// 城市信息type CityInfo struct {Lng float64Lat float64City string}// 获取经纬度func getL...
·
背景:
居然需要为上百个地址信息添加对应的经纬度,没办法了,只能让程序帮忙完成了。
1、腾讯地图上的经纬度
2、程序使用golang编写
步骤:
1、在腾讯地图注册并开启WebServiceAPI
2、golang程序
// 城市信息
type CityInfo struct {
Lng float64
Lat float64
City string
}
// 获取经纬度
func getLongLat(address string)(*CityInfo, error){
key := "GGRBZ-L4NKJ-4MVFF-KZ6GW-****-****" // 创建应用的key
skey := "j3Qnp12XlPLyGqKoSMdKGQN********" // 开启WebServiceAPI获取的key
path := "/ws/geocoder/v1"
query := "address=" + address + "&key=" + key // 这里实际上是需要根据key进行排序的,详见教程
md5src := path + "?" + query + skey
sig := md5V(md5src)
fmt.Println(sig)
url := "http://apis.map.qq.com/ws/geocoder/v1?address=" + address + "&key=" + key + "&sig=" + sig
resultstr := (Get(url))
fmt.Println(resultstr)
var result 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"`
AddressComponents struct{
City string `json:"city"`
} `json:"address_components"`
}
}
err := json.Unmarshal([]byte(resultstr), &result)
if err != nil{
fmt.Println(err.Error())
return nil, err
}
cityInfo := CityInfo{}
cityInfo.City = result.Result.AddressComponents.City
cityInfo.Lng = result.Result.Location.Lng
cityInfo.Lat = result.Result.Location.Lat
return &cityInfo, nil
}
// md5加密
func md5V(str string) string {
h := md5.New()
h.Write([]byte(str))
return hex.EncodeToString(h.Sum(nil))
}
// 请求url
func Get(url string) (response string) {
client := http.Client{Timeout: 5 * time.Second}
resp, error := client.Get(url)
if error != nil {
panic(error)
}
defer resp.Body.Close()
var buffer [512]byte
result := bytes.NewBuffer(nil)
for {
n, err := resp.Body.Read(buffer[0:])
result.Write(buffer[0:n])
if err != nil && err == io.EOF {
break
} else if err != nil {
panic(err)
}
}
response = result.String()
return
}
3、更新数据库
这个就直接获取数据记录,通过详细地址获取经纬度后更新就可以了,simple…
更多推荐
已为社区贡献1条内容
所有评论(0)