package baidu import ( . "co "fmt" "io/ioutil" "net/http" "net/url" ) type baiduMap struct { Ak string Url string } var BaiDuMap = baiduMap{} func (that *baiduMap) Init(Ak string) { //"ak=ZeT902EZvVgIoGVWEFK3osUm" that.Ak = Ak that.Url = "https://api.map.baidu.com/place/v2/suggestion?output=json" + "&ak=" + Ak //query } // from 源坐标类型: // 1:GPS标准坐标; // 2:搜狗地图坐标; // 3:火星坐标(gcj02),即高德地图、腾讯地图和MapABC等地图使用的坐标; // 4:3中列举的地图坐标对应的墨卡托平面坐标; // 5:百度地图采用的经纬度坐标(bd09ll); // 6:百度地图采用的墨卡托平面坐标(bd09mc); // 7:图吧地图坐标; // 8:51地图坐标; // 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 // GetPosition 获取定位列表 func (that *baiduMap) GetPosition(name string, region string) (string, error) { client := &http.Client{} if region == "" { region = "全国" } reqest, err := http.NewRequest("GET", that.Url+"&query="+url.PathEscape(name)+"®ion="+url.PathEscape(region), 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 }