- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在实现一个 dragBox 以一次选择多个向量。由于 dragBox 对象需要一个“条件:”并且在官方示例中它是一个按键,我认为是“shift”,我已经在 Angular 中设置了一个单例 bool 变量,它将条件设置为“ol.events.condition.always "或 "ol.events.condition.never"对象接受并在计算机上正常工作......但是在移动设备上不起作用,我认为这可能在移动设备上起作用,比如画一个圆圈但没有。
有没有办法让它在移动设备上运行?
这是我的代码。
mapFeature.addDragBox = function () {
webMapValues.dragBox = new ol.interaction.DragBox({
/* dragbox interaction is active only if "multi select"
check box is checked is pressed */
condition: ((webMapValues.multiSelect == true) ?
ol.events.condition.always : ol.events.condition.never),
/* style the box */
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: [0, 0, 255, 1]
})
})
});
/* add the DragBox interaction to the map */
webMapValues.mapObj.addInteraction(webMapValues.dragBox);
if (webMapValues.multiSelect == true) {
webMapValues.vectorMultiSelect = new
ol.interaction.Select();
webMapValues.mapObj.addInteraction(webMapValues.vectorMultiSelect);
webMapValues.multiSelectFeatures =
webMapValues.vectorMultiSelect.getFeatures();
webMapValues.dragBox.on('boxend', function () {
// features that intersect the box are added to the
collection of
// selected features
webMapValues.clickedCoordinates =
webMapValues.dragBox.getGeometry().getCoordinates();
var extent =
webMapValues.dragBox.getGeometry().getExtent();
var layer = rcisMapService.getLayer("vector");
angular.forEach(layer, function (Layer, key) {
var source = Layer.getSource();
source.forEachFeatureIntersectingExtent(extent,
function (feature) {
webMapValues.multiSelectedFeatures.push(vector);
});
});
mapFeature.Highlight();
});
webMapValues.dragBox.on('boxstart', function () {
webMapValues.popup.setPosition(undefined);
webMapValues.multiSelectedFeatures = [];
});
}
};
最佳答案
在移动设备上“拖动”的能力在 OpenLayers 3 中不存在......最接近它的是使用“绘制”功能绘制一个正方形,然后获得与该正方形相交的所有内容。
if (selectionToolsSelection == "Box") {
var geometryFunction = ol.interaction.Draw.createBox();
drawObj = new ol.interaction.Draw({
features: features,
type: "Circle",
geometryFunction: geometryFunction
});
mapObj.addInteraction(drawObj);
}
然后您可以捕获“drawend”事件并执行您需要的操作...
drawObj.on('drawend', function (e) {Do magic stuff here});
关于移动设备上的 OpenLayers 3 dragBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47839779/
我目前正在实现一个 dragBox 以一次选择多个向量。由于 dragBox 对象需要一个“条件:”并且在官方示例中它是一个按键,我认为是“shift”,我已经在 Angular 中设置了一个单例 b
我想在 DropTarget 不接受时显示可拖动的反馈动画。Flutter 不显示反馈。有什么方法可以展示或控制它。像这个例子,我想实现这个效果。我以某种方式实现了这种效果,但返回原始偏移量是不正确的
我的 OpenLayers v3 有一个错误(无论 V3 中的哪个版本)。我尝试向我的 map 添加 ol.interaction.DragBox,但是当我开始拖动时,ol.js 崩溃并显示消息: o
我是一名优秀的程序员,十分优秀!