openlayers如何处理map onclick和draw同时出现的问题
Openlayers how to handle map onclick and draw at the same time problem
我正在使用 tileWMS 从地理服务器获取图层。
因此,当我单击地图时,如果单击图层,我将获得要素信息,但是如果我绘制多边形,如果点在图层上,则地图上的单击触发器也会 运行。
我尝试过与矢量交互 select,但不适用于 tileWMS。
我可以在绘制后删除绘制交互,但我该如何处理才能在绘制时不获取特征信息?
是否可以使用 tileWMS 执行 addinteraction 和 removeinteraction 之类的操作?
我最近在使用 openlayers 3。
https://i.ibb.co/5vZwPYx/2.png
谢谢。
// this is my layer & map
var layer = new ol.layer.Tile(
{
source : new ol.source.TileWMS(
{
url: 'http://localhost:2121/geoserver/geoserver/wms',
params: {'LAYERS': 'geoserver:coordinate_polygon', 'TILED': true},
serverType: 'geoserver'
})
});
var map = new ol.Map(
{
pixelRatio: 1,
controls: ol.control.defaults().extend([zoomslider, mousePositionControl]),
loadTilesWhileInteracting: true,
layers: [osm, layer, layer_draw_vector],
target: 'map',
view: view
});
// ----------------------------
//the trigger
map.on('singleclick', function(evt)
{
//doin request to geoserver let's say I alert the response
alert(feature[0].properties.name;
}
map.addInteraction(interaction_draw);
interaction_draw.on('drawend',function(e)
{
alert(e.feature.getGeometry().getExtent());
});
// ----------------------------
如果您使用 interaction_draw.setActive(true);
和 interaction_draw.setActive(false);
打开和关闭交互,您可以在继续任何地图点击操作之前检查交互是否处于活动状态。
map.on('singleclick', function(evt)
{
if (interaction_draw.getActive()) return;
...
...
...
});
我正在使用 tileWMS 从地理服务器获取图层。
因此,当我单击地图时,如果单击图层,我将获得要素信息,但是如果我绘制多边形,如果点在图层上,则地图上的单击触发器也会 运行。
我尝试过与矢量交互 select,但不适用于 tileWMS。
我可以在绘制后删除绘制交互,但我该如何处理才能在绘制时不获取特征信息?
是否可以使用 tileWMS 执行 addinteraction 和 removeinteraction 之类的操作?
我最近在使用 openlayers 3。
https://i.ibb.co/5vZwPYx/2.png
谢谢。
// this is my layer & map
var layer = new ol.layer.Tile(
{
source : new ol.source.TileWMS(
{
url: 'http://localhost:2121/geoserver/geoserver/wms',
params: {'LAYERS': 'geoserver:coordinate_polygon', 'TILED': true},
serverType: 'geoserver'
})
});
var map = new ol.Map(
{
pixelRatio: 1,
controls: ol.control.defaults().extend([zoomslider, mousePositionControl]),
loadTilesWhileInteracting: true,
layers: [osm, layer, layer_draw_vector],
target: 'map',
view: view
});
// ----------------------------
//the trigger
map.on('singleclick', function(evt)
{
//doin request to geoserver let's say I alert the response
alert(feature[0].properties.name;
}
map.addInteraction(interaction_draw);
interaction_draw.on('drawend',function(e)
{
alert(e.feature.getGeometry().getExtent());
});
// ----------------------------
如果您使用 interaction_draw.setActive(true);
和 interaction_draw.setActive(false);
打开和关闭交互,您可以在继续任何地图点击操作之前检查交互是否处于活动状态。
map.on('singleclick', function(evt)
{
if (interaction_draw.getActive()) return;
...
...
...
});