对于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下设置弹出窗口吗?如果可以,怎么办?