距离计算(一对多)
腾讯地图 官方文档
本服务用于单起点到多终点,或多起点到单终点的路线距离(非直线距离)计算: *. 支持两种距离计算方式:步行和驾车。 *. 起点到终点最大限制直线距离10公里。
基本说明:
接口地址:https://apis.map.qq.com/ws/distance/v1
返回格式:json/jsonp
请求方式:get
请求示例:https://apis.map.qq.com/ws/distance/v1/?mode=driving&from=39,116&to=39,115;39,116&key=yourkey
请求参数说明:
名称 类型 必填 说明
key string 必填 开发密钥 扫码关注公众号
mode string 必填 计算方式:driving(驾车)、walking(步行)。默认:driving
from string 必填 起点坐标,格式:lat,lng;lat,lng...(经度与纬度用英文逗号分隔,坐标间用英文分号分隔)
to string 必填 终点坐标,格式:lat,lng;lat,lng...(经度与纬度用英文逗号分隔,坐标间用英文分号分隔)
output string 选填 返回格式
callback string 选填 JSONP方式回调函数
返回参数说明:
名称 类型 说明
- - -
JSON返回示例:
{
	"status": 0,
	"message": "query ok",
	"result": {
		"elements": [{
				"from": {
					"lat": 39.983171,
					"lng": 116.308479
				},
				"to": {
					"lat": 39.99606,
					"lng": 116.353455
				},
				"distance": 5204,
				"duration": 535
			},
			{
				"from": {
					"lat": 39.983171,
					"lng": 116.308479
				},
				"to": {
					"lat": 39.949227,
					"lng": 116.39431
				},
				"distance": 12079,
				"duration": 969
			}
		]
	}
}
服务级错误码参照
错误码 说明
310 请求参数信息有误
311 Key格式错误
306 请求有护持信息请检查字符串
110 请求来源未被授权
完整教学代码示例
<?php
class freeApi{
    private $apiUrl;
    private $appKey;

    public function __construct($appKey){
        $this->appKey = $appKey;
        $this->apiUrl = 'https://apis.map.qq.com/ws/distance/v1';
    }
    /**
     * 获取结果
     * @return string
     */
    public function getResult(){
        $paras = [
            'key' => $this->appKey,
            'mode' => 'driving',
            'from' => '39,116',
            'to' => '39,116',
        ];
        return $this->freeApiCurl($this->apiUrl,$paras);
    }
    /**
     * 请求接口返回内容
     * @param  string $url [请求的URL地址]
     * @param  string $params [请求的参数]
     * @return  string
     */
    public function freeApiCurl($url,$params=[]){
        if (!$params) return false;
        return file_get_contents($url.'?'.http_build_query($params));
    }
}
package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"net/http"
)

const (
	APIURL   = "https://apis.map.qq.com/ws/distance/v1"
	APIKEY = "your key"
)

func main() {
	queryUrl := fmt.Sprintf("%s?key=%s&mode=driving&from=39,116&to=39,115;39,116",APIURL,APIKEY)
	resp, err := http.Get(queryUrl)
	if err != nil {
		log.Println(err)
		return
	}

	defer resp.Body.Close()

	body, err := ioutil.ReadAll(resp.Body)

	if err != nil {
		fmt.Println(err)
		return
	}

	fmt.Println(string(body))
}