php百度轨迹
2021-01-30 00:15
标签:driving == 地图 sea encode 构造函数 service 返回 中文 /** namespace lib; class BaiDuTsapi { //apk=‘1amCKqfKoSobuxXg3q1Q1rYiUOX7czX9‘ /** //创建服务 /** /** /** } php百度轨迹 标签:driving == 地图 sea encode 构造函数 service 返回 中文 原文地址:https://www.cnblogs.com/-lsf/p/13198525.html
* Description of Rsa
*
* @author lsf
*/
//put your code here
//创建服务
static public $service_add = "http://yingyan.baidu.com/api/v3/entity/add";
//里程和轨迹查询
static public $gettrack= "http://yingyan.baidu.com/api/v3/track/gettrack";
//创建终端
static public $getdistance = "http://yingyan.baidu.com/api/v3/track/getdistance";
//上传点
static public $point_upload = "http://yingyan.baidu.com/api/v3/track/addpoints";
static public $list="http://yingyan.baidu.com/api/v3/entity/list";
* 构造函数
*/
public function __construct() {
}
* $data["ak"]=用户在百度地图官网申请Web服务API类型KEY
* * $data["entity_name"]=Service 的名字,名字在同一个 Key 下不可重复,不可为空。
命名规则:仅支持中文、英文大小字母、英文下划线"_"、英文横线"-"和数字,不能以"_"开头,最长不得超过128个字符。
* * $data["desc"]=针对此 Service 的文字描述,方便用户对 Service 进行记忆。
命名规则:仅支持中文、英文大小字母、英文下划线"_"、英文横线"-"和数字, 不能以"_"开头,最长不得超过128个字符。
* return sid 所属服务的唯一ID,name服务名称
*/
public function queryList($data = array()) {
$n=0;
$string="";
foreach ($data as $k => $v) {
if ($n == 0) {
$string .= "?" . $k . "=" . $v;
} else {
$string .= "&" . $k . "=" . $v;
}
$n++;
}
$res = httpRequest(self::$list . $string);
$res = json_decode($res, true);
if ($res["status"] == 0) {
return array("success" => true, "data" => $res["entities"]);
} else {
return array("success" => false, "message" => "serviceAdd" . $res["message"]);
}
}
/**
* $data["ak"]=用户在百度地图官网申请Web服务API类型KEY
* * $data["entity_name"]=Service 的名字,名字在同一个 Key 下不可重复,不可为空。
命名规则:仅支持中文、英文大小字母、英文下划线"_"、英文横线"-"和数字,不能以"_"开头,最长不得超过128个字符。
* * $data["desc"]=针对此 Service 的文字描述,方便用户对 Service 进行记忆。
命名规则:仅支持中文、英文大小字母、英文下划线"_"、英文横线"-"和数字, 不能以"_"开头,最长不得超过128个字符。
* return sid 所属服务的唯一ID,name服务名称
*/
public function serviceAdd($data = array()) {
if (empty($data["entity_name"])) {
$data["entity_name"] = "weihom";
}
$res = httpRequest(self::$service_add, http_build_query($data));
$res = json_decode($res, true);
if ($res["status"] == 0) {
return array("success" => true, "data" => "");
} else {
return array("success" => false, "message" => "serviceAdd" . $res["message"]);
}
}
/**
* 批量上传点
* $data["ak"]:用户在百度地图官网申请Web服务API类型KEY, $data["service_id"]:在轨迹管理台创建鹰眼服务时,系统返回的 service_id
* 轨迹点总数不超过100个,json 格式。轨迹点字段描述参见 addpoint 接口,其中 entity_name,latitude,longitude,loc_time,coord_type_input5个字段必填,其他字段可选
* @param type $data
* @return type
*/
public function uploadTraceAdd($data = array()) {
$points = json_decode($data["point_list"], true);
$newPoints = array();
$i = 0;
foreach ($points as $k => $v) {
if ($k % 90 == 0 && $k > 0) {
$i++;
}
$newPoints[$i][] = $v;
}
foreach ($newPoints as $v) {
$data["point_list"] = json_encode($v);
$res = httpRequest(self::$point_upload, http_build_query($data));
$res = json_decode($res, true);
if ($res["status"] != 0) {
return array("success" => false, "message" => "uploadTraceAdd" . $res["message"]);
}
}
return array("success" => true, "data" => "");
}
* 查询轨迹
* $data["ak"]:用户在百度地图官网申请Web服务API类型KEY, $data["sid"]:服务的唯一编号,$data["tid"]:此ID终端唯一编号,$data["trid"]:此ID为轨迹的唯一编号
* $data["points"]:array("location"=>array("x","y"),"locatetime"=>"")
* @param type $data
* @return distance:轨迹长度,单位:米,time:轨迹持续时间,单位:毫秒,counts:返回的轨迹点数量
*/
public function gettrack($data = array()) {
$string = "";
$data["page_size"] = 4000;
$data["is_processed"] = 1;
$data["supplement_mode"] = "driving";
$data["coord_type_output"] = "bd09ll";
$data["need_mapmatch"]=1;
$data["supplement_content"]="distance_and_points";
$n=0;
$string="";
foreach ($data as $k => $v) {
if ($n == 0) {
$string .= "?" . $k . "=" . $v;
} else {
$string .= "&" . $k . "=" . $v;
}
$n++;
}
$res = httpRequest(self::$gettrack . $string);
$res = json_decode($res, true);
if ($res["status"] == 0) {
return array("success" => true, "data" => $res);
} else {
return array("success" => false, "message" => "queryTrsearch" . $res["message"]);
}
}
* 里程查询:start_time=开始时间,end_time=结束时间 entity_name=服务名 service_id=返回的服务id
* @param type $data
* @return type
*/
public function getdistance($data = array()) {
$string = "";
$data["is_processed"] = 1;
$data["supplement_mode"] = "driving";
foreach ($data as $k => $v) {
if ($n == 0) {
$string .= "?" . $k . "=" . $v;
} else {
$string .= "&" . $k . "=" . $v;
}
$n++;
}
$res = httpRequest(self::$getdistance . $string);
$res = json_decode($res, true);
if ($res["status"] == 0) {
return array("success" => true, "data" => $res["distance"]);
} else {
return array("success" => false, "message" => "queryTrsearch" . $res["message"]);
}
}