在做前端開發(fā)的時(shí)候挽铁,看到過后臺開發(fā),通過IP獲取地址敞掘,地理編碼和反地理編碼叽掘,那么Go語言如何實(shí)現(xiàn)這個(gè)功能,在這里可以借助百度地圖第三方sdk玖雁,API文檔,在用這些功能的時(shí)候更扁,我使用別人開發(fā)好的文件直接調(diào)用,代碼如下:
package main
import (
"fmt"
"github.com/menduo/gobaidumap"
)
func main() {
var lat string = "19.9139658858"
var lng string = "110.2107238770"
//從坐標(biāo)到地址
locationToaddress, err := gobaidumap.GetAddressViaGEO(lat, lng)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("坐標(biāo)地址:", locationToaddress)
fmt.Println("坐標(biāo)地址-地址", locationToaddress.Result.AddressComponent)
}
//有地址到坐標(biāo)
address := "廣州市天河區(qū)石牌小學(xué)"
addressToLocation, err := gobaidumap.GetGeoViaAddress(address)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("從地址到坐標(biāo)-all", addressToLocation)
fmt.Println("從地址到坐標(biāo) - Lat", addressToLocation.Result.Location.Lat)
fmt.Println("從地址到坐標(biāo) - Lng", addressToLocation.Result.Location.Lng)
fmt.Println("\n")
}
//由ip到地址
//ipAddress := "222.76.214.60"
ipAddress := "218.77.129.195"
IPToAddress, err := gobaidumap.GetAddressViaIP(ipAddress)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("從ip到地址:", IPToAddress)
fmt.Println("從ip到地址-地址", IPToAddress.Content.Address)
fmt.Println("\n")
}
}
ouput:
[ ~/Documents/go_work/src/ ] #
[ ~/Documents/go_work/src/ ] # go run ipAddress.go
[ go run ipAddress.go
| done: 458.790231ms ]
坐標(biāo)地址: &{0 { 海南省汉斩口市秀英區(qū) {号ň担口市 秀英區(qū) 海南省 } []} }
坐標(biāo)地址-地址 {海口市 秀英區(qū) 海南省 }
從地址到坐標(biāo)-all &{0 {{113.34600987339948 23.133596153096427} 1 80 教育} }
從地址到坐標(biāo) - Lat 23.133596153096427
從地址到坐標(biāo) - Lng 113.34600987339948
從ip到地址: &{CN|海南|壕⒀幔口|None|CHINANET|0|0 {海南省禾叛Γ口市 {海口市 125 海南省 { }}} 0 }
從ip到地址-地址 海南省翰贡牵口市
看過gobaidumap源碼的哄啄,就是根據(jù)百度api文檔發(fā)送的http請求,我們在學(xué)習(xí)過程中可以使用下风范,如果正式開發(fā)咨跌,建議使用自己結(jié)合自己項(xiàng)目實(shí)際情況寫,然后key得用自己申請的硼婿。