美文网首页
通过地点获取周边地铁和公交信息

通过地点获取周边地铁和公交信息

作者: meng_philip123 | 来源:发表于2017-12-07 19:47 被阅读107次

最近在做一个简历相关的项目 里面有一个有意思的功能 效果图如下:

经过对百度地图的研究以及我目前有的数据(只有一个工作地点)  需要经过3个接口去处理 

第一个接口(地址转坐标接口):

地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

第二个接口(坐标查周围基础设施(地铁 公交)):

地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-placeapi

第三个接口(根据起始地址坐标和目的地坐标计算步行路程或者时间):

地址:http://lbsyun.baidu.com/index.php?title=webapi/route-matrix-api-v2

php简单代码实现如下:

1.配置文件

<?php

return array (

       'ak'=> 'rhnKciva0DXwlexdgsrhgse4e6cdkGUy',

      //地址转坐标接口

      'geocoder_url' => 'http://api.map.baidu.com/geocoder/v2/',

      //坐标查周围基础设施(地铁 公交)

      'placesearch_url' => 'http://api.map.baidu.com/place/v2/search',

     //根据起始地址坐标和目的地坐标计算步行路程或者时间

     'routematrix_url' => 'http://api.map.baidu.com/routematrix/v2/walking',

     //路程距离范围搜索 默认半径1000米内

     'radius' => 1000 ,

);

/*

* 计算交通方便不方便

*/

public function calculateTraffic($addr = ""){

//地址转坐标接口

$resultgeo = $this->baidumapGeocoder($addr);

//坐标查周围基础设施(地铁 公交)

$resultplace = $this->baidumapPlacesearch($resultgeo);

if(!empty($resultplace)){

$subways = false !== strpos($resultplace['address'],"路") ? $resultplace['name']."公交站" : $resultplace['name']."地铁站";

$resultgeo['dlat'] = $resultplace['location']['lat'];

$resultgeo['dlng'] = $resultplace['location']['lng'];

//根据起始地址坐标和目的地坐标计算步行路程或者时间

$resultRoutematrix = $this->baidumapRoutematrix($resultgeo);

if((int)$this->findNum($resultRoutematrix[0]['duration']['text']) <= 10){ //小于10分钟内的算交通方便

return "距离".$subways.' 步行'.$resultRoutematrix[0]['duration']['text'];

}else{

return "";

}

}else{

return "";

}

}

/*

* 计算并提取数字

*/

public function findNum($str=''){

$str=trim($str);

if(empty($str)){return '';}

$result='';

for($i=0;$i<=strlen($str);$i++){

if(is_numeric($str[$i])){

$result.=$str[$i];

}

}

return $result;

}

/*

* 地址转坐标接口

*/

public function baidumapGeocoder($addr = ""){

$result = $results = [];

if(empty($addr)){

return $result;

}

$searchUrl = C('BAIDUMAP')['geocoder_url'] . '?address='.$addr.'&output=json&ak='.$this->baidumapak;

//echo 'searchUrl:'.$searchUrl.PHP_EOL;

$result = (new HttpClient())->get($searchUrl);

$result = json_decode($result, true);

if($result['status'] !== 0){

return $results;

}

return $result['result']['location'];

}

/*

* 坐标查周围基础设施(地铁 公交)

*/

public function baidumapPlacesearch($location = []){

$result = $results = [];

if(empty($location)){

return $result;

}

$searchUrl = C('BAIDUMAP')['placesearch_url'] . '?query=地铁$公交&location='.$location['lat'].','.$location['lng'].'&radius='.$this->baidumapradius.'&output=json&ak='.$this->baidumapak;

//echo 'searchUrl:'.$searchUrl.PHP_EOL;

$result = (new HttpClient())->get($searchUrl);

$result = json_decode($result, true);

if($result['status'] !== 0){

return $results;

}

return $result['results'][0];

}

/*

* 根据起始地址坐标和目的地坐标计算步行路程或者时间

*/

public function baidumapRoutematrix($location = []){

$result = $results = [];

if(empty($location)){

return $result;

}

$searchUrl = C('BAIDUMAP')['routematrix_url'] . '?output=json&origins='.$location['lat'].','.$location['lng'].'&destinations='.$location['dlat'].','.$location['dlng'].'&ak='.$this->baidumapak;

//echo 'searchUrl:'.$searchUrl.PHP_EOL;

$result = (new HttpClient())->get($searchUrl);

$result = json_decode($result, true);

if($result['status'] !== 0){

return $results;

}

return $result['result'];

}

calculateTraffic(“北京市海淀区中关村理想国际大厦”);

至此完毕

相关文章

  • 通过地点获取周边地铁和公交信息

    最近在做一个简历相关的项目 里面有一个有意思的功能 效果图如下: 经过对百度地图的研究以及我目前有的数据(只有一个...

  • 这个国庆,去了福州

    【信息】 时间:2018年10月04日-10月06日 地点:福州 交通:动车+高铁+地铁+公交+单车+步行 【准备...

  • 获取信息的方式

    你觉得获取信息的方式有哪些? 有人说他会通过和别人聊天来获取信息,有人会通过看书来获取信息,有人通过看视频来获取信...

  • 公交和地铁

    前几天出门,下雨,公交站离得近就坐的公交。 人多车晃,站在那里想静静地想点东西,但是不如愿,于是只好关注起车外的风...

  • 思维导图的妙用

    现在,我们获取信息越来越便捷,我们通过阅读电子书和自媒体获取信息,我们通过短视频和直播获取信息,但是如果不做思考,...

  • 机器学习案例-链家租房房价预测(线性回归算法)

    例子描述: 通过编写爬虫程序,获取链家网站的租房信息。通过获取到的租房信息进行训练和预测。 所需环境:Python...

  • #地铁周边

    坐地铁去学校 日复一日 像机器人似的 依旧感谢上帝赐予我这种前所未有的奇遇 因为在地铁里可以遇见各式各样的人 但相...

  • 关于公交和地铁

    搬到了南边之后,每天上下班都要挤地铁和公交车。每天早上六点半起床捯饬,然后七点出门。先要去公交站做公交车去新宫地铁...

  • 阅读使内心平静

    如今是信息泛滥的时代,各种内容段子,可便捷获取;在公交,在地铁……总有些低头族玩着手机,沉迷与此,乐在其中。但...

  • 通过java代码获取jvm信息和系统信息

    前言 随着微服务的概念逐渐流行,监控成了必不可少的模块,本篇文章主要介绍一下如何通过java代码获得一些核心的数据...

网友评论

      本文标题:通过地点获取周边地铁和公交信息

      本文链接:https://www.haomeiwen.com/subject/kkujixtx.html