站点查询与公交线路 最后更新时间: 2024年01月08日
本文介绍 JS API 提供的相关公交查询服务,包括:
- 公交站点查询插件AMap.StationSearch:通过站点名称关键字查询相关公交站点信息
- 公交线路查询插件AMap.LineSearch:通过公交线路名称查询该线路的信息
公交路线规划前往 路线规划教程
1、公交站点查询
1.1 获取公交站点信息
使用公交站点查询插件AMap.StationSearch,通过关键字或ID查询,获得公交站点名称、位置、ID、途径公交线路等详细信息。
以查询"东直门"公交站点为例,一次完整的代码示例:
AMap.plugin(["AMap.StationSearch"], function () {
//实例化公交站点查询插件
var station = new AMap.StationSearch({
pageIndex: 1, //页码,默认值为1
pageSize: 20, //单页显示结果条数,默认值为20,最大值为50
city: "010", //限定查询城市,可以是城市名(中文/中文全拼)、城市编码
});
//执行关键字查询
station.search("东直门", function (status, result) {
//status:complete 表示查询成功,no_data 为查询无结果,error 代表查询错误
//查询成功时,result.stationInfo 即为公交站点详细信息
});
});
1.2 绘制公交站点标记
使用AMap.StationSearch插件获取公交站点信息后,可以根据得到的公交站点信息在地图上绘制公交站点标记。这里以查询"东直门"关键字举例,主要包含以下三个步骤:
- 创建AMap.StationSearch对象
- 搜索"东直门"关键字,获取站点信息
- 将站点信息用AMap.Marker绘制到地图上
AMap.plugin(["AMap.StationSearch"], function () {
//实例化公交站点查询插件
var station = new AMap.StationSearch({
city: "010", //限定查询城市,可以是城市名(中文/中文全拼)、城市编码
});
//执行关键字查询
station.search("东直门", function (status, result) {
//status:complete 表示查询成功,no_data 为查询无结果,error 代表查询错误
if (status === "complete" && result.info === "OK") {
var stationArr = result.stationInfo; //查询成功时,result.stationInfo 即为公交站点详细信息
for (var i = 0; i < stationArr.length; i++) {
//绘制点标记 Marker
var marker = new AMap.Marker({
//点标记中显示的图标
icon: new AMap.Icon({
image: "//a.amap.com/jsapi_demos/static/resource/img/pin.png",
size: new AMap.Size(32, 32),
imageSize: new AMap.Size(32, 32),
}),
offset: new AMap.Pixel(-16, -32), //点标记显示位置偏移量
position: stationArr[i].location, //点标记在地图上显示的位置
map: map, //显示该覆盖物的地图对象
});
//构造 marker 的信息窗体
marker.info = new AMap.InfoWindow({
content: stationArr[i].name, //信息窗体的显示内容
offset: new AMap.Pixel(0, -30),
});
//鼠标悬停时显示该 marker 的信息窗体
marker.on("mouseover", function (e) {
e.target.info.open(map, e.target.getPosition());
});
}
}
//将覆盖物调整到合适视野
map.setFitView();
});
});
2、公交路线查询
2.1 获取公交线路信息
通过公交线路查询插件AMap.LineSearch可获得该公交线路起终点、途经点、首末班车时间等详细信息。
以查询“919”公交路线为例,一次完整的代码示例:
AMap.plugin(["AMap.LineSearch"], function () {
//实例化公交线路查询插件
var linesearch = new AMap.LineSearch({
pageIndex: 1, //页码,默认值为1
pageSize: 20, //单页显示结果条数,默认值为20,最大值为50
city: "北京", //限定查询城市,可以是城市名(中文/中文全拼)、城市编码
extensions: "all", //是否返回公交线路详细信息,默认值为 "base"
});
//执行公交路线关键字查询
linesearch.search("919", function (status, result) {
console.log(status, result);
//status:complete 表示查询成功,no_data 为查询无结果,error 代表查询错误
//查询成功时,result.lineInfo 即为公交线路详细信息
});
});
2.2 绘制公交路线
使用AMap.LineSearch插件获取公交线路信息后,可以根据得到的公交线路信息在地图上绘制对应的公交线路。这里以查询“919”公交路线举例,主要包含以下三个步骤:
- 创建AMap.LineSearch对象
- 搜索“919”公交路线信息,获取线路信息
- 将路线信息绘制到地图上
AMap.plugin(["AMap.LineSearch"], function () {
//实例化公交线路查询插件
var linesearch = new AMap.LineSearch({
city: "北京", //限定查询城市,可以是城市名(中文/中文全拼)、城市编码
extensions: "all", //是否返回公交线路详细信息,默认值为 "base"
});
//执行公交路线关键字查询
linesearch.search("919", function (status, result) {
//status:complete 表示查询成功,no_data 为查询无结果,error 代表查询错误
if (status === "complete" && result.info === "OK") {
//查询成功时,result.lineInfo 即为公交线路详细信息
var lineArr = result.lineInfo;
//循环遍历 lineArr 数组,lineArr 数组包含的是公交线路数据
for (var i = 0; i < lineArr.length; i++) {
var pathArr = lineArr[i].path; //获取当前线路的路径坐标数据
var stops = lineArr[i].via_stops; //获取当前线路途径的站点数据
var startPot = stops[0].location; //获取当前线路的起始位置
var endPot = stops[stops.length - 1].location; //获取当前线路的终点位置
//作为示例,只绘制一条线路,如果当前是第一条线路(i == 0)
if (i == 0) {
//绘制起点,终点
new AMap.Marker({
map: map, //指定地图对象
position: startPot, //起点位置
icon: "https://webapi.amap.com/theme/v1.3/markers/n/start.png",
zIndex: 10, //起点标记的 z-index 值,用于控制层次关系
anchor: "bottom-center", //起点标记的锚点位置
});
new AMap.Marker({
map: map,
position: endPot, //终点位置
icon: "https://webapi.amap.com/theme/v1.3/markers/n/end.png",
zIndex: 10,
anchor: "bottom-center",
});
//绘制乘车的路线
new AMap.Polyline({
map: map,
path: pathArr, //路径坐标数据
strokeColor: "#09f", //线颜色
strokeOpacity: 0.8, //线透明度
isOutline: true, //显示轮廓线
outlineColor: "white", //轮廓线颜色
strokeWeight: 6, //线宽
});
}
}
//将覆盖物调整到合适视野
map.setFitView();
}
});
});