在OpenLayers中显示QGIS的“地图提示”?

时间:2019-08-20 18:49:38

标签: javascript jquery ajax openlayers qgis

对于QGIS和Openlayers还是有一些新知识。您将如何在OpenLayers中显示QGIS的“地图提示”?我当前正在使用QGIS 2.18,并且具有Openlayers中的最新更新。在QGIS中,我在“地图提示”中创建了一个显示,当您将鼠标悬停在县上时,该县会显示该县的信息。现在需要将“地图提示”显示到openlayers中。

现在,我知道您可以在OpenLayers中创建地图弹出窗口,但是这种想法涉及很多代码,并且想了解我们是否有可能在QGIS中做到这一点。

OpenLayers基本上会获取通过QGIS渲染的图像并将其显示在地图中。我已经在大纲图层中应用了“地图提示”,并且可以在QGIS中显示它。我假设使用QGIS,它可以使用图像中的“地图提示”来渲染和创建图像,但是如何?我已经在图层上应用了它,甚至将这些图层分离成自己的图层,但是“打开”中没有显示“地图提示”。我假设有一些代码可以放到openlayers中以显示带有提示的层,但是找不到合适的代码来使用。在openlayers,google,搜索引擎等上随处可见,似乎无法找到QGIS和Openlayers之间的正确连接以在地图上显示“地图提示”。我想念什么?

<script>
     var projection = new ol.proj.Projection({
            code: 'EPSG:3857',
            extent: [-11822316, 4304590, -9430259, 6360040]
     });

    var  extent = [-11822316, 4304590, -9430259, 6360040];

 var outline_layer = new ol.layer.Image({
        extent: extent,
        label: 'outline_layer',
        visible: true,
         source: new ol.source.ImageWMS({
                url: '/map/qgis_mapserv.fcgi?MAP=mapping.qgs&',
                crossOrigin: 'anonymous',                                           
                params: {
                    'LAYERS': 'Outlines',
                    'FORMAT': 'image/png'
                },
            serverType: 'qgis',                                         
        })
    });
var map = new ol.Map({
    controls: ol.control.defaults().extend([
     new ol.control.ScaleLine()
]),
    layers: [ background_layer,
        outline_layer],
    target: 'map',
    view: new ol.View({
        projection: projection,
            center: [-10597609, 5335488],
            extent: extent,
            zoom: 1.8
    })
});

var changeLayer = function changeLayer(ev) {
    var val = $(this).val();
    var checked = $(this).is(':checked');
    map.getLayers().forEach(function (layer) {
        if (layer.get('label') === val) {
        layer.setVisible(checked);                                              
        } else {
            layer.setVisible(false);                                                                    
            outline_layer.setVisible(true); 
            jurisdiction_names.setVisible(true);
        }
    });

    $('input:checkbox').not($(this)).each(function () {
        $(this).attr('checked', false);                                             
    });
};

$('input').each(function () {
    $(this).on('change', changeLayer);
});
</script>

我需要做的是,只要有人将鼠标悬停在地图上的县名或县辖区上,就会弹出“地图提示”显示并显示用户信息。我觉得必须有一种方法可以在OpenLayers中显示“地图提示”。 有没有办法在OpenLayers中显示QGIS“地图提示”?还有其他方法可以使用QGIS显示弹出窗口,而不在openlayers下设置弹出窗口吗?如果可以,怎么办?

0 个答案:

没有答案