在地图上显示一个字段的内容

0 投票

老师您好,这是使用9D的leaflet.js进行开发的,里面有一个layer.binpopup的方法,是鼠标点击底图上的点后以弹框的方式弹出添加的信息,现在我想问的是有没有什么方法不用同过鼠标点击直接在地图上显示出来的

3月 4, 2020 分类:  383次浏览 | 用户: qwert 初出茅庐 (36 分)

1个回答

0 投票
您好,这个是bindpopup决定的,如果要想让他全部显示的话单独在每个oneachfeature遍历中新建一个popup,然后通过设置popup 的坐标和信息来设置,但是这种的话需要你有popup的坐标点位置,如果feature的属性中有中心点位置的话就比较好弄,如果没有的话需要你计算一下feature的边界范围然后计算中心点
3月 4, 2020 用户: 于浩 登峰造极 (5,668 分)

老师您好,layer.binpopup的方法不是在地图上添加一个弹窗事件么,然后通过鼠标点击地图上的这个地方,弹出添加的内容,我现在需要的是不用鼠标点击,加载地图的时候直接显示弹框的内容。

现在发现一个layer.bindTooltip()的方法,这个与layer.binpopup()类似,是直接把需要的内容添加到地图上,但是添加后是处于隐藏状态的,鼠标悬浮到地图的这个地方后显示地图上的内容,我现在需要的是不用通过鼠标悬浮才能显示,直接加载页面的时候加载出来地图上添加的内容,

再或者您有什么在能在地图上添加内容的方法也行,都能达到想要的效果

我的意思就是让你把bindpopup改成一个单独的popup去实现,你可以在官网替换这段代码试一下效果

function query() {
        var sqlParam = new SuperMap.GetFeaturesBySQLParameters({
            queryParameter: {
                name: "Countries@World",
                attributeFilter: "SMID = 247"
            },
            datasetNames: ["World:Countries"]
        });
        L.supermap
            .featureService(url)
            .getFeaturesBySQL(sqlParam, function (serviceResult) {
                resultLayer = L.geoJSON(serviceResult.result.features).addTo(map);
                var bounds = L.geoJSON(serviceResult.result.features).getBounds();
                var latlng = L.latLng((bounds._northEast.lat+bounds._southWest.lat)/2,(bounds._northEast.lng+bounds._southWest.lng)/2 );
                var popup = L.popup()
                .setLatLng(latlng)
                .setContent('SMID = '+serviceResult.result.features.features[0].id)
                .openOn(map);
            });
    }

...