百度地图new BMap.Polygon()函数的问题

发布于 2022-09-06 21:10:29 字数 3005 浏览 20 评论 0

使用element中的el-dialog,在dialog中使用百度地图
data: {

    dialogMapVisible: true,

}
需要在mounted方法中初始化地图
this.$nextTick(function () {

            this.initRouteMap();
            this.dialogMapVisible = false;
        });

在methods: {

// 初始化地图
        initRouteMap: function() {
            var routemap = new BMap.Map('routeMap');
            window.routemap = routemap;
            routemap.centerAndZoom(new BMap.Point(116.404, 39.915), 5);
            routemap.enableScrollWheelZoom();
            var navigationControl = new BMap.NavigationControl({
                // 靠左上角位置
                anchor: BMAP_ANCHOR_TOP_LEFT,
                // LARGE类型
                type: BMAP_NAVIGATION_CONTROL_LARGE,
                // 启用显示定位
                enableGeolocation: false
            });
            routemap.addControl(navigationControl);
        },
        // 点击弹出dialog
         handleClick: function(row) {
            this.routeData = row;
            this.dialogMapVisible = !this.dialogMapVisible;
            routemap.clearOverlays();
         
            var startPoint = new BMap.Point(this.routeData.saleObject.longitude, this.routeData.saleObject.latitude);
            var endPoint = new BMap.Point(this.routeData.harbor.longitude, this.routeData.harbor.latitude);
            var startMarker = new BMap.Marker(startPoint);  // 创建开始标注
            var endMarker = new BMap.Marker(endPoint);  // 创建结束标注
            routemap.addOverlay(startMarker);
            routemap.addOverlay(endMarker);

            _self = this;
            var windowInfoContent;
            var opts = {
                offset : new BMap.Size(0,-15) //信息窗口偏移
            };
            startMarker.addEventListener('mouseover', function(e) {
                var latlng = e.point;
                windowInfoContent = "销售点:" + _self.routeData.saleObject.name + "<br>柜号:" + _self.routeData.cabinetNo;
                var info = new BMap.InfoWindow(windowInfoContent, opts);
                routemap.openInfoWindow(info, latlng);
            });
            endMarker.addEventListener('mouseover', function(e) {
                var latlng = e.point;
                windowInfoContent = "港口:" + _self.routeData.harbor.name + "<br>柜号:" + _self.routeData.cabinetNo;
                var info = new BMap.InfoWindow(windowInfoContent, opts);
                routemap.openInfoWindow(info, latlng);
            });

            // 画线
            var polygon = new BMap.Polygon([
                new BMap.Point(this.routeData.saleObject.longitude, this.routeData.saleObject.latitude),
                new BMap.Point(this.routeData.harbor.longitude, this.routeData.harbor.latitude)
            ], {strokeColor: "#00BFFF", strokeWeight:2, strokeOpacity: 0.7});  //创建线连接
           
            routemap.addOverlay(polygon);

        },

}

问题是,dialog打开后,地图出来了,标志点也标上了,但是线没有画上上去,要拖动一下或者鼠标滚动一下地图,线才会出现,请问为什么,那里的代码写错了?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文