有时候作为一个新手而言,我们遇到的问题,就是我没有见过这样的东西,接触新事物的能力有点差,
我就是这样,找了很久计算导航距离的SDK没有找到,只好自己写了,希望能给大家一点帮助,直接贴代码了
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type Distance struct {
origin string
destination string
}
type AnalyzeJson struct {
Status int `json:"status"`
Message string `json:"message"`
Info struct {
Copyright struct {
Text string `json:"text"`
ImageURL string `json:"imageUrl"`
} `json:"copyright"`
} `json:"info"`
Result struct {
Elements []struct {
Distance struct {
Text string `json:"text"`
Value int `json:"value"`
} `json:"distance"`
Duration struct {
Text string `json:"text"`
Value int `json:"value"`
} `json:"duration"`
} `json:"elements"`
} `json:"result"`
}
var (
// 基础URL
baseURL = "http://api.map.baidu.com/direction/v1/routematrix?+" +
"output=%s&origins=%s&model=%s&destinations=%s&ak=%s"
// ak
ak = "百度申请一个你自己的AK就可以了,很简单"
// 出行方式是driving
model = "driving"
// 输出方式
output = "json"
// 解析结果
distanceJson AnalyzeJson
)
func (d Distance) CalculateDistance() string {
DistanceURL := fmt.Sprintf(baseURL, output,
d.origin, model, d.destination, ak)
req, _ := http.NewRequest("GET", DistanceURL, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
err := json.Unmarshal([]byte(body), &distanceJson)
if err != nil {
panic(err)
}
elementResult := distanceJson.Result.Elements
for _, value := range elementResult {
FinalDistance := value.Distance.Text
return FinalDistance
}
return ""
}
func main() {
root := Distance{
origin: "北京",
destination: "南京",
}
fmt.Println(root.CalculateDistance())
}
有不明白的 可以再下面 给我留言,有好的建议的也可以。哈哈
热门评论
你好,能不能做一个工具,可以把包含起始地点和到达地点的excel文件导进去,算出两点驾驶距离。