hotime/dri/baidu/map.go

145 lines
3.3 KiB
Go
Raw Normal View History

2022-01-17 04:47:39 +08:00
package baidu
import (
. "co
2022-01-17 04:47:39 +08:00
"fmt"
"io/ioutil"
"net/http"
"net/url"
)
2022-03-13 02:00:40 +08:00
type baiduMap struct {
2022-01-17 04:47:39 +08:00
Ak string
Url string
}
2022-03-13 02:00:40 +08:00
var BaiDuMap = baiduMap{}
func (that *baiduMap) Init(Ak string) {
2022-01-17 04:47:39 +08:00
//"ak=ZeT902EZvVgIoGVWEFK3osUm"
2022-03-13 01:48:54 +08:00
that.Ak = Ak
that.Url = "https://api.map.baidu.com/place/v2/suggestion?output=json" + "&ak=" + Ak
2022-01-17 04:47:39 +08:00
//query
}
// from 源坐标类型:
// 1GPS标准坐标
// 2搜狗地图坐标
// 3火星坐标gcj02即高德地图、腾讯地图和MapABC等地图使用的坐标
// 43中列举的地图坐标对应的墨卡托平面坐标;
// 5百度地图采用的经纬度坐标bd09ll
// 6百度地图采用的墨卡托平面坐标bd09mc;
// 7图吧地图坐标
// 851地图坐标
// int 1 1 否
// to
// 目标坐标类型:
// 3火星坐标gcj02即高德地图、腾讯地图及MapABC等地图使用的坐标
// 5百度地图采用的经纬度坐标bd09ll
// 6百度地图采用的墨卡托平面坐标bd09mc
func (that *baiduMap) Geoconv(latlngs []Map, from, to int) (Slice, error) {
client := &http.Client{}
latlngsStr := ""
for _, v := range latlngs {
if latlngsStr != "" {
latlngsStr = latlngsStr + ";" + v.GetString("lng") + "," + v.GetString("lat")
} else {
latlngsStr = v.GetString("lng") + "," + v.GetString("lat")
}
}
url := "https://api.map.baidu.com/geoconv/v1/?from=" + ObjToStr(from) + "&to=" + ObjToStr(to) + "&ak=" + that.Ak + "&coords=" + latlngsStr
reqest, err := http.NewRequest("GET", url, nil)
if err != nil {
fmt.Println("Fatal error ", err.Error())
return nil, err
}
response, err := client.Do(reqest)
defer response.Body.Close()
if err != nil {
fmt.Println("Fatal error ", err.Error())
return nil, err
}
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return nil, err
}
//fmt.Println(string(body))
data := ObjToMap(string(body))
if data.GetCeilInt64("status") != 0 {
return nil, err
}
return data.GetSlice("result"), err
}
func (that *baiduMap) GetAddress(lat string, lng string) (string, error) {
client := &http.Client{}
url := "https://api.map.baidu.com/reverse_geocoding/v3/?ak=" + that.Ak + "&output=json&location=" + lat + "," + lng
reqest, err := http.NewRequest("GET", url, nil)
if err != nil {
fmt.Println("Fatal error ", err.Error())
return "", err
}
response, err := client.Do(reqest)
defer response.Body.Close()
if err != nil {
fmt.Println("Fatal error ", err.Error())
return "", err
}
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return "", err
}
//fmt.Println(string(body))
return string(body), err
}
dy))
return string(b
2022-01-17 04:47:39 +08:00
// GetPosition 获取定位列表
2022-03-13 02:00:40 +08:00
func (that *baiduMap) GetPosition(name string, region string) (string, error) {
2022-01-17 04:47:39 +08:00
client := &http.Client{}
2022-01-26 11:45:17 +08:00
if region == "" {
region = "全国"
}
2022-03-13 01:48:54 +08:00
reqest, err := http.NewRequest("GET", that.Url+"&query="+url.PathEscape(name)+"&region="+url.PathEscape(region), nil)
2022-01-17 04:47:39 +08:00
if err != nil {
fmt.Println("Fatal error ", err.Error())
return "", err
}
response, err := client.Do(reqest)
defer response.Body.Close()
if err != nil {
fmt.Println("Fatal error ", err.Error())
return "", err
}
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return "", err
}
//fmt.Println(string(body))
return string(body), err
}