【发布时间】:2018-08-20 16:48:21
【问题描述】:
我有一个 maps 组件正在初始化一个谷歌地图,根据从父级传递的道具向该地图添加标记,然后设置地图的正确边界。但是,这些标记是通过计算属性添加的,因为我希望它具有反应性。实际上一切正常,除了我的计算属性中的addMarkers 函数似乎没有评估页面何时加载,因此加载了组件。
现在奇怪的是:当我打开 Vue Devtools 并单击 maps 组件时,addMarkers 立即评估并正确更改地图。
任何帮助都非常感谢:-)
<template lang="pug" >
div.google-map(id="results-map")
</template>
<script>
import Gmaps from 'gmaps';
export default {
name: 'maps',
props: {
results: {
type: Array,
required: true
}
},
data() {
return {
map: {},
bounds: {}
}
},
computed: {
addMarkers() {
this.results.forEach((result) => {
if (result.latitude && result.longitude) {
var marker = this.map.addMarker({
lat: result.latitude,
lng: result.longitude,
title: result.name,
infoWindow: {
content: result.name
}
});
}
this.bounds.extend(marker.position)
});
this.map.fitBounds(this.bounds)
}
},
mounted() {
this.map = new Gmaps({
div: '#results-map',
lat: 0,
lng: 0,
zoom: 15
});
this.bounds = new google.maps.LatLngBounds();
}
}
</script>
【问题讨论】:
标签: javascript vue.js vuejs2 vue-component