Go语言地理编码和反地理编码,根据IP获取ip所在地
2018-01-16 本文已影响34人
小歪子go
在做前端开发的时候,看到过后台开发,通过IP获取地址,地理编码和反地理编码,那么Go语言如何实现这个功能,在这里可以借助百度地图第三方sdk,API文档,在用这些功能的时候,我使用别人开发好的文件直接调用,代码如下:
package main
import (
"fmt"
"github.com/menduo/gobaidumap"
)
func main() {
var lat string = "19.9139658858"
var lng string = "110.2107238770"
//从坐标到地址
locationToaddress, err := gobaidumap.GetAddressViaGEO(lat, lng)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("坐标地址:", locationToaddress)
fmt.Println("坐标地址-地址", locationToaddress.Result.AddressComponent)
}
//有地址到坐标
address := "广州市天河区石牌小学"
addressToLocation, err := gobaidumap.GetGeoViaAddress(address)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("从地址到坐标-all", addressToLocation)
fmt.Println("从地址到坐标 - Lat", addressToLocation.Result.Location.Lat)
fmt.Println("从地址到坐标 - 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 ]
坐标地址: &{0 { 海南省海口市秀英区 {海口市 秀英区 海南省 } []} }
坐标地址-地址 {海口市 秀英区 海南省 }
从地址到坐标-all &{0 {{113.34600987339948 23.133596153096427} 1 80 教育} }
从地址到坐标 - Lat 23.133596153096427
从地址到坐标 - Lng 113.34600987339948
从ip到地址: &{CN|海南|海口|None|CHINANET|0|0 {海南省海口市 {海口市 125 海南省 { }}} 0 }
从ip到地址-地址 海南省海口市
看过gobaidumap源码的,就是根据百度api文档发送的http请求,我们在学习过程中可以使用下,如果正式开发,建议使用自己结合自己项目实际情况写,然后key得用自己申请的。