Vue使用高德地图搭建实时公交应用功能(地图+附近站点+线路详情+输入提示+换乘详情)

阅读: 评论:0

Vue使⽤⾼德地图搭建实时公交应⽤功能(地图+附近站点+线路详情
+输⼊提⽰+换乘详情)
最近项⽬要使⽤⾼德地图写了⼀个实时公交的应⽤,这边分享⼀个⼩应⽤主要熟悉下⾼德地图在vue中的使⽤,常⽤api,vue的常⽤指令
先给⼤家看下页⾯效果:
如果有需要源码的童鞋请移步我的github地址 (欢迎star)玛纳斯县属于哪个市
实现思路
在vue项⽬中导⼊⾼德地图具体功能调⽤相应⾼德js APi
1.在vue项⽬中导⼊⾼德地图
1.修改f.js⽂件
externals: {
'AMap': 'AMap'
}
2.引⼊sdk 引⼊有两种⽅式,⼀种是在index页⾯直接引⼊
<script type="text/javascript" src="webapi.amap/maps?v=1.3&key=您申请的key值"></script>
还有⼀种是异步加载
<script src="webapi.amap/maps?v=1.3&key=您申请的key值&callback=init"></script>
<script>
function init(){
var map = new AMap.Map('container', {
center: [117.000923, 36.675807],
zoom: 6
});
map.plugin(["AMap.ToolBar"], function() {
map.addControl(new AMap.ToolBar());
});
}
鼓浪屿免费景点
</script>
注意不管是采⽤哪种⽅式,都要保证你想要加载地图的js⽂件,在引⼊的sdk之后。这样,在第三步的时候,才不会报错
3.在当前需要加载vue页⾯引⼊
import AMap from 'AMap'
2.附近站点功能
AMap.service(['AMap.PlaceSearch'], function () {
var placeSearch = new AMap.PlaceSearch({ // 构造地点查询
pageSize: 4,
typ: '',
pageIndex: 1,
city: '苏州' // 城市
})
// 中⼼点坐标
// [currentLocation.lng,currentLocation.lat]
// 120.6400961887,31.1411187922
var currentLocation = true
if (currentLocation !== undefined) {
placeSearch.searchNearBy('公交站点', [120.6400961887, 31.1411187922], 1500, function (status, result) {
if (status === 'complete' && result.info === 'OK') {
var pois = result.poiList.pois
var random = [4, 4, 24, 14]
pois.forEach((item, index) => {
this.items.push({
site: item.name.substr(0, item.name.indexOf('(')),
line: item.address,
distance: item.distance,
next_site: '',
sitenum: random[index],
siteId: item.id
})
this.lineInfo(item.address.substr(0, item.address.indexOf(';') - 1), item.id, index)
})
console.log(result.poiList)
}
}.bind(this))
}
}.bind(this))
这边主要调⽤⾼德周边搜索API,构造地点查询类tye 设为空,采⽤公交站点为关键字进⾏查询,这边中⼼点坐标是写死的,各位⼩伙伴可以调⽤⾼德定位api去获得当前坐标
3.线路实时详情
AMap.service(['AMap.LineSearch'], function () {
var linesearch = new AMap.LineSearch({
pageIndex: 1,
city: this.city,
pageSize: 20,
extensions: 'all' // 返回全部信息
})
linesearch.search(this.lineName, function (status, result) {
// 取回公交路线查询结果
if (status === 'complete' && result.info === 'OK') {
this.lineInfo = result.lineInfo
var tips = result.lineInfo[0]
console.log(tips)淮北人论坛
this.from = tips.start_stop + '-'
< = d_stop
this.lineId = tips.id
if (tips.stime.length !== 0 && tips.length !== 0) {
this.time_s = tips.stime.substr(0, 2) + ':' + tips.stime.substr(2, 2)
this.time_e = ime.substr(0, 2) + ':' + ime.substr(2, 2)
} else {
this.time_s = '05:40'
this.time_e = '18:40'
}
this.pay = tips.basic_price
this.listWidth = tips.via_stops.length
this.backImage.width = tips.via_stops.length + 'rem'
tips.via_stops.forEach((item, index) => {
泰和天气预报15天
if (item.id === this.siteId) {
this.ind = index
console.log(index)
this.showActive(this.ind, this.siteName)
}
this.siteList.push({
siteName: item.name,
siteLat: item.location.lat,
siteLng: item.location.lng
})
})
内蒙古农业大学
} else {
// ⽆数据或者查询失败
}
// setInterval(busposition(), 60000)
}.bind(this))
}.bind(this))
},
这边调⽤公交路线查询接⼝,查询相关路线详情,这边⼩车车的位置是⼀个写死数组(实际情况可以根据班车GPS坐标判断班车在哪两个站点之间),可以点击相应站点显⽰最近班车相聚站点数
4.输⼊提⽰
this.autocomplete.search(this.keywords, function (status, result) {
if (status === 'complete' && result.info === 'OK') {
var tips = result.tips
this.hisTips = []
console.log('tips', tips)
for (var i = 0; i < tips.length; i++) {
if (tips[i].location !== '' && undefined !== tips[i].location && tips[i].district.substr(0, 6) === '江苏省苏州市') {
this.hisTips.push({
lng: tips[i].location.lng,
lat: tips[i].location.lat,
name: tips[i].name,
district: tips[i].district
})
}
}
} else {
}
}.bind(this))
这边使⽤指令v-on:input调⽤我们输⼊提⽰的⽅法进⾏列表展⽰
5.换乘详情
AMap.service('AMap.Transfer', function () { // 回调函数
// 实例化Transfer
var transptions = {
policy: 0, // 乘车策略,少时间0 少步⾏3 最少换乘2
city: '苏州' // 城市
}
this.Linesearch()
}.bind(this))
console.log(result)
if (status === 'complete' && result.info === 'OK') {
var plans = result.plans
console.log('plans', plans)
for (var i = 0; i < plans.length; i++) {
var cost = plans[i].cost
var time = parseInt(plans[i].time / 60)
var segments = plans[i].segments
var trans = []
if (segments !== '' && segments !== undefined) {
for (var j = 0; j < segments.length; j++) {
if (segments[j].transit_mode === 'BUS') {
const linename = segments[j].instruction
trans.push(linename.substr(2, linename.indexOf('(') - 2))
} else if (segments[j].transit_mode === 'SUBWAY') {
const linename = segments[j].instruction
trans.push(linename.substr(2, linename.indexOf('线') - 2))
}
}
}
this.plan.push({
沈阳动物园游玩攻略cost: cost,
time: time,
trans: trans
})
}
} else {
}
}.bind(this))
这⾥我们调⽤transfer.search()传⼊起点和终点坐标,是通过输⼊提⽰获得的,把得到结果进⾏列表展⽰
总结
以上所述是⼩编给⼤家介绍的Vue使⽤⾼德地图搭建实时公交应⽤功能(地图 + 附近站点+线路详情 + 输⼊提⽰+换乘详情),希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!

本文发布于:2023-09-11 15:54:29,感谢您对本站的认可!

本文链接:http://www.035400.com/whly/4/227259.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   班车   地图   站点
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2024-2030 Comsenz Inc.Powered by © 文化旅游网 滇ICP备2022007236号-403 联系QQ:1103060800网站地图