mapbox popup组件内容 有点击事件等操作

如果只是展示,可以在 properties.description 中使用原生html ,

然后

// new SFMap.Popup()
                    //         .setLngLat(coordinates)
                    //         .setHTML(description)
                    //         .addTo(window.map);
 
便可以渲染出来
 
 
但是当有其他的操作事件时,    原生的事件会不起效果, 不生效,  要使用   setDOMContent
代码:
     点击事件发生时:
                window.map.on('click','points',(e)=>{
                    var coordinates = e.features[0].geometry.coordinates.slice();
                      var description = e.features[0].properties.description;
                    while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {
                        coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;
                    }//弹框的定位
                        this.createPopUp(e)
                        new SFMap.Popup()
                            .setLngLat(coordinates)
                            .setMaxWidth("400px")//设置弹窗最大狂赌
                            .setDOMContent(this.popupTemp)
                            .addTo(window.map);
                 
                        })
 
//函数
        createPopUp(currentFeature) {
            var that = this;
            that.videoObj = currentFeature; //传递到弹框页面的数据
            const p = Vue.extend(Popup);     //Popup 是一个单独的模板页面 。自定义
            let vm = new p({
                propsData: {
                objes: that.videoObj   //要传输的数据对象
                }, //传参
            });
            vm.$mount(); //挂载
            this.popupTemp = vm.$el;
            },
posted @ 2022-05-10 16:59  泽泽生龙  阅读(878)  评论(0编辑  收藏  举报