vue 项目中使用百度地图问题?

2021-04-19 11:48:33 +08:00
 woduzibue
最近项目中使用百度地图,根据后台推过来的点坐标 list,在百度地图上生成路线,现在后台返回 1W 多条数据,前台页面就直接卡死了。用的是别人封装好的 vue-baidu-map ,请教一下有没有什么好的实现方法?或者 vue 项目中应该怎样正确的使用百度地图 ?
2321 次点击
所在节点    Vue.js
16 条回复
KouShuiYu
2021-04-19 13:14:14 +08:00
不需要监听数据掉不要放在 data 中,放在外面试试,如果还不行就分批渲染
woduzibue
2021-04-19 13:22:46 +08:00
@KouShuiYu 不放在 data 中,放在外面是指放在哪里?
ryncv
2021-04-19 13:56:11 +08:00
@woduzibue 不要在 data 中提前声明,否则会被添加响应式。需要的时候直接 this.list = xx 。 或者使用 Object.freeze
woduzibue
2021-04-19 14:44:39 +08:00
@ryncv 我刚才也用了 Object.freeze,请求用了 1.4min 最后回来还是没反应

this.loading = true
this.axios
.post(
'/api/tms/goodsMonitor/getWaybillOfDeviceInfo',
{
waybillNo: values.waybillNo
},
{ timeout: 200000 }
)
.then(response => {
this.loading = false
if (response) {
this.map.path = Object.freeze(response.gpsInfoList)
this.map.markers = Object.freeze(response.weightMonitorWorkList)
this.map.center = {
lng: this.map.path[this.map.path.length - 1].lng,
lat: this.map.path[this.map.path.length - 1].lat
}
this.map.car = {
lng: this.map.path[0].lng,
lat: this.map.path[0].lat
}
this.map.car = JSON.parse(JSON.stringify(this.map.center))
this.loading = false
}
})
.catch(() => {
this.loading = false
})
.finally(() => {
this.loading = false
})
woduzibue
2021-04-19 15:19:32 +08:00
@KouShuiYu
@ryncv 谢谢两位大佬, Object.freeze 使用后 路线出来了 ,刚才没出来是后台返回的异常点太多( bm-marker) 估计是需要渲染的 bm-marker 太多 导出 画面卡死了。
谢谢谢谢
ciddechan
2021-04-19 16:59:56 +08:00
bd 文档有大量点渲染方法
AkideLiu
2021-04-19 21:55:03 +08:00
借楼问一下,最近在用 Google map vue,github 上大多数 lib 都是半死不活的。难道是 vue 不需要实现 map 这类的功能吗?还是大佬们都是自己封装
NPC666
2021-04-19 22:08:44 +08:00
@AkideLiu gmap-vue
AkideLiu
2021-04-19 23:27:30 +08:00
@NPC666 对现在用的就是这个,感觉活跃度很低,而且 upstream 多次断更
zzw1998
2021-04-20 01:03:02 +08:00
@AkideLiu 我用的是 vue2-google-maps
OHyn
2021-04-20 02:24:25 +08:00
Vue2.x 遇到性能问题的,基本山都是往 data 里塞了无需和 view 绑定的数据。
当年我把高德地图的实例塞进去了。。。😂
还有一个事,就是尽量不要用 vue-baidu-map 这种封装好的二传手,否则遇到 bug 会很痛苦。
uselessVisitor
2021-04-20 08:41:41 +08:00
不要把点都放在 data 里。。
woduzibue
2021-04-20 09:38:19 +08:00
@OHyn 我找了几个教程说是用 vue-baidu-map 方便点。之前也没用过地图,后面有时间再研究研究,时间紧任务重,bug 就留给后面改的人吧 hhhh

@beichenhpy 又学到了,这是学到老,活到老

@ciddechan 可以可以 ,我再找找看,谢谢谢谢
t2doo
2021-04-20 14:00:30 +08:00
前几年用百度地图写过, 纯 JS 的,没地用 Vue.当要显示的点位上了 5000 以上, 就很卡, 直接卡崩.后来用了 echarts 上面的百度地图包,1W+都不卡,秒开.
woduzibue
2021-04-20 14:23:58 +08:00
@t2doo echarts 也没用过,又多一种思路,谢谢
OHyn
2021-04-20 20:32:26 +08:00
@t2doo echart 是纯 canvas 方案,点再多也不怕,近年来各大地图页加入了相关 api 。基于 dom 的方案确实不适合大数据量的情况。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/771610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX