问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何实现vue中的高德地图 实时监控

发布网友 发布时间:2022-04-19 15:54

我来回答

2个回答

懂视网 时间:2022-05-15 04:36

这次给大家带来怎样操作Vue做出高德地图搭建实时公交应用,操作Vue做出高德地图搭建实时公交应用的注意事项有哪些,下面就是实战案例,一起来看一下。

最近项目要使用高德地图写了一个实时公交的应用,这边分享一个小应用主要熟悉下高德地图在vue中的使用,常用api,vue的常用指令

先给大家看下页面效果:

如果有需要源码的童鞋请移步我的github地址 vue搭建实时公交 (欢迎star)

实现思路

在vue项目中导入高德地图 具体功能调用相应高德js APi

1.在vue项目中导入高德地图

1.修改webpac.base.conf.js文件

externals: {
 'AMap': 'AMap'
 }

2.引入sdk 引入有两种方式,一种是在index页面直接引入

<script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=您申请的key值"></script>

还有一种是异步加载

<script src="http://webapi.amap.com/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'

原文链接: http://www.gxlcms.com/article/112413.htm

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 + '-'
 this.to = tips.end_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 = tips.etime.substr(0, 2) + ':' + tips.etime.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) => {
 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.transfer = new AMap.Transfer(transptions)
 this.Linesearch()
 }.bind(this))
this.transfer.search([this.$route.query.fromAddressLng, this.$route.query.fromAddressLat], [this.$route.query.toAddressLng, this.$route.query.toAddressLat], function (status, result) {
 console.log(status)
 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()传入起点和终点坐标,是通过输入提示获得的, 把得到结果进行列表展示

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

怎样使用AngularJS实现标签页tab选项卡切换

如何使用Koa2开发微信二维码扫码支付

热心网友 时间:2022-05-15 01:44

点击地图界面右边的路况,显示红绿*就是实时路况打开了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
虹口区东余杭路541弄算几号地块?12年下半年号称要拆,附近都在拆类,明... 我想知道新建路东余杭路这二年有没有拆迁规划? 手机通话变声器哪种好 变声器哪个好用 我准备7月底开始复习考研,还来得及吗 大四下学期考研还来得及吗 考研还来得及吗 ...在脊椎骨右边靠脊椎骨附近疼,是什么原因,大概有半个多月了,弯腰时... 电脑开着总是无缘无故蓝屏提示 电脑开着总是无缘无故蓝屏 电脑无缘无故蓝屏怎么回事探究电脑突然蓝屏的原因 vue页面的元素定位问题? Vue框架怎么做sitemap? 求推荐vue.js地址选择插件和地图插件 使用vue-amap的高德地图,怎么定义地图实例的名字 vue使用高德定位在安卓手机上能够正常提示授权并获... 如何将百度地图弄成一个vue组件 vue 微信公众号实现高德地图拖拽定位? 女生吃什么东西最补身体 女人吃什么食物对身体好 女人生孩子吃什么养身体? 女人吃什么滋阴养巢 女孩子多吃什么对身体好 女人吃什么对身体好? 女生身体虚吃什么补? 女人吃什么对身体好 女人养生该吃什么? 25岁女生应该吃什么来保养皮肤和身体? 女人应该吃什么来调养身体,补气血 女人要保养自己,吃什么食物好 女性吃什么养颜 vue使用高德地图和mars3d地图如何切换 如何将百度地图包装成Vue的组件 在vue-amap中怎么获去取可视区域的半径和中心点? 如何解决vue中css中绝对定位? 劳务施工方案 vue 中怎么引用echart地图 施工组织设计怎么编制? webpack+vue怎么做百度地图组件化,其中百度地图的... 施工组织设计(方案)报审表 一式几份呢,总包单位说... vue2.0中怎么做锚点定位 求助园林景观施工组织设计范文 分包单位是否需要报审施工组织设计? 在施工组织设计中,怎样制定有针对性的安全技术措施? 绿化工程施工方案 设计方案 实施方案的区别及模板 施工组织设计的创优措施 施工总包分包方案审批的要求 最新版建筑工程安全文明施工组织设计方案 园林景观施工组织设计和施工方案区别 一个工地的工程该怎么运行? 路桥工程师的工作内容