为了账号安全,请及时绑定邮箱和手机立即绑定

获取标记但 lat 和 lng 为空 - vue.js

获取标记但 lat 和 lng 为空 - vue.js

斯蒂芬大帝 2021-06-20 13:12:23
我正在尝试在地图上显示标记。我在 vue 开发工具中看到的数据没有问题。也this.markers有数据。但在我的lat和里面lng 是空的我不确定我的做法是错误的吗?data(){        return {            markers: []        }    },    computed: {        articles(){            return this.$store.getters.getArticles;        }    },    watch: {        articles(){            this.buildMarkers();            this.clearMarkers();        }    },    methods: {        clearMarkers(){            for( var i = 0; i < this.markers.length; i++ ){                this.markers[i].setMap( null );            }        },        buildMarkers: function(){            this.markers = [];            for( var i = 0; i < this.articles.length; i++ ){                var position = new google.maps.LatLng(this.articles[i].lat, this.articles[i].lng);                console.log(position);                var marker = new google.maps.Marker({                    position: position,                    map: this.map                });                this.markers.push(marker);            }        },    },    mounted(){        this.map = new google.maps.Map(document.getElementById('article-map'), {            center: {lat: this.latitude, lng: this.longitude},            zoom: this.zoom        });        this.clearMarkers();        this.buildMarkers();    },为了更容易理解,这是 devtool 的图像。顺便说一下,我可以看到地图。唯一的问题是我看不到上面的标记,因为 lat & lng 是空的。
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

您有一个标记数组,因此buildMarkers()必须已执行该函数,这会将它们添加到地图中。


在控制台中打开的标记的地图属性已设置为 null(将其从地图中删除),这意味着也clearMarkers()已执行。


我注意到在您的文章()观察者中,您首先构建然后清除标记。我认为它可能应该读


articles(){

  this.clearMarkers();

  this.buildMarkers();

}


查看完整回答
反对 回复 2021-06-24
  • 1 回答
  • 0 关注
  • 231 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信