博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【百度地图API】如何制作“从这里出发”“到这里去”——公交篇
阅读量:6863 次
发布时间:2019-06-26

本文共 3569 字,大约阅读时间需要 11 分钟。

摘要:

百度地图首页上的“从这里出发”“到这里去”,一直是开发者们很热衷的一个功能。那么,怎样结合百度的数据库,来制作这个功能呢?让我们一起来学习一下。

-------------------------------------------------------------------------------------------------------------------------------------------

成品图如下:

---------------------------------------------------------------------------------------------------------------------------------------------

零、基础知识准备

首先,我们来看看公交方案的“从这里去”“到这里来”是怎么制作的。

需要创建一个公交方案,然后使用search功能。

细心的朋友们已经看到了,search接口的start和end参数,其实是可以输入point的。

那么,“从这里出发”到天安门,就应该是search(point,“天安门”)。

从天安门出发“到这里来”,就是search(“天安门”,point)了。

专业地说,这叫做“单边检索”。就是一个参数是string字符串类型,另一个是point经纬度类型。

而这个point,正是检索出来的结果。

--------------------------------------------------------------------------------------------------------------------------------------

一、如何检索出地图数据

首先,创建一个检索对象。

var local = new BMap.LocalSearch(map,{onSearchComplete: searchComplete});   //构造一个查询

  

然后使用检索方法,如下:

local.search("希尔顿逸林酒店");

  

下面,写回调函数。因为AJAX的异步机制,我们需要写回调函数,才能对检索成功后的数据进行操作。

我们写这样一个函数,当检索成功后,返回第一个点,并且利用这个点进行标注的添加。

注意:开发者可以返回多个点,使用循环即可。详见《》,里面有返回所有第一页10个结果的代码。

var searchComplete = function (results){
if (local.getStatus() != BMAP_STATUS_SUCCESS){
return ; } var point = results.getPoi(0); addMarker(point); }

  

标注的添加函数应该包含以下几个要点:

1、marker,就是标注的位置。(用户可自定义marker的图片,更改icon属性即可。见文章《》)

2、infowindow,信息窗口信息。可以书写任意的htm内容。我取了百度数据库里的名称、地址、电话和经纬度信息。还放入了“从这里出发”“到这里去”的输入框。

3、添加标注。

4、重新设置中心点和地图级别。

//查询完毕添加自定义标注 function addMarker(point){
var marker = new BMap.Marker(point.point); var infoWindow = new BMap.InfoWindow("
名称:"+point.title+"
地址:"+point.address+"
电话:"+point.phoneNumber+"

从这里到
到这里
"); // 创建信息窗口对象 map.addOverlay(marker); setTimeout(function(){map.centerAndZoom(point.point,14);marker.openInfoWindow(infoWindow);},500); }

  

第一步完成以后,运行你的页面,就是这个样子啦:

--------------------------------------------------------------------------------------------------------------------------------------

二、公交查询语句“从这里出发”和“到这里来”

首先,创建一个公交导航的对象。

map:map  是说,把公交线路图展现在map地图上。

panel:results  是说,把结果面板,展示在results里面。注意,这里要加上引号。

var transit = new BMap.TransitRoute(map, {renderOptions: {map: map, panel : "results"}});

  

创建好之后,就开始做公交查询了。

把刚才取到的经纬度,做为起点或者终点,进行公交查询。

function bus_start(){
transit.search(thisPoint , document.getElementById("point_start").value); } function bus_end(){
transit.search(document.getElementById("point_end").value , thisPoint); }

  

公交查询的结果将会显示在results里面。如下图:

--------------------------------------------------------------------------------------------------------------------------------------

三、全部源代码

   
公交方案的单边检索

  

--------------------------------------------------------------------------------------------------------------------------------------

四、公交时间与距离

百度地图API的官网上有示例,请点击。

js大概是这样写的,如下:

output += plan.getDuration(true) + "\n";             //获取时间  output += plan.getDistance(true) + "\n";             //获取距离

  

--------------------------------------------------------------------------------------------------------------------------------------

五、公交方案

有三种可选,较便捷、可换乘、少步行。请。

类参考如下:

--------------------------------------------------------------------------------------------------------------------------------------

六、公交线路与公交站信息

查询例如,“104路电车”“975路”等公交车的信息,。

--------------------------------------------------------------------------------------------------------------------------------------

七、不乘地铁的公交方案(新增)

做地铁是不是很贵啊?哈哈,,返回所有不乘地铁的公交方案。

转载于:https://www.cnblogs.com/milkmap/archive/2011/08/12/2136266.html

你可能感兴趣的文章
ALGEBRA-3 线性映射
查看>>
C# 利用ReportViewer生成报表
查看>>
下拉菜单
查看>>
knockout.js 练习一
查看>>
Asp.Net Core SignalR 与微信小程序交互笔记
查看>>
os.linesep提取当前平台使用的换行符
查看>>
到底什么是故事点(Story Point)?
查看>>
修改用户定义的数据类型
查看>>
网络流24题10
查看>>
多域名THINKPHP利用MEMCACHE方式共享SESSION数据(转)
查看>>
C#基础 for 穷举、迭代
查看>>
2018.3.17 模拟赛——(2)删数
查看>>
视图层
查看>>
Django跨域解决方法
查看>>
LeetCode题目分类
查看>>
为什么拷贝构造函数的参数是一个引用,可以不是引用吗
查看>>
Mysql之复制服务
查看>>
shell命令xargs解析
查看>>
我的vim配置
查看>>
银行家算法------------------狄泰软件学院
查看>>