Golang语言社区Go常用库

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得用自己申请的。

上一篇下一篇

猜你喜欢

热点阅读