小编Sin*_*ity的帖子

如何获取开放层3中矢量图层内的矢量元素数量

有人知道如何计算OL3矢量图层中存在的特征数量吗?

我的矢量图层定义如下,我想知道它有多少元素,理想情况下当前渲染了多少元素:

var styleCache = {};
var WFS_layer_Traffic_Lights = new ol.layer.Vector({
source : new ol.source.GeoJSON({
    projection : 'EPSG:3857',
    url : "Vector_Data/Traffic_Lights_Bordeaux.geojson"
}),


style : function(feature, resolution) {

    var path;
    var x_anchor;
    var y_anchor;       

    if(resolution < 4){
    path = 'Icons/Traffic_Lights_Sign_Icon_Small.png';
    x_anchor = 23;
    y_anchor = 90;
    }
    if(resolution >= 4 && resolution < 10){
    path = 'Icons/Traffic_Lights_Sign_Small.png'; 
    x_anchor = 16;
    y_anchor = 16;
    }       
    if(resolution >= 10){
    path = 'Icons/Traffic_Lights_Sign_Tiny.png';        
    x_anchor = 10;
    y_anchor = 10;
    }


    if (!styleCache[path]) {
        styleCache[path] …
Run Code Online (Sandbox Code Playgroud)

javascript openlayers-3

3
推荐指数
1
解决办法
5053
查看次数

打开图层 3 加载地图后禁用捏合旋转

我希望我的应用程序中有一个选项,允许在用户需要时禁用捏合旋转。

我有一张地图:

map_object = new ol.Map({
target: 'map',
controls: controls_list,
interactions: interactions_list,
overlays: [overlay],
layers: vector_layers,
view: view
});
Run Code Online (Sandbox Code Playgroud)

您会注意到我在地图定义中以通常的方式定义了交互。我的交互列表如下:

var interactions_list = ol.interaction.defaults({altShiftDragRotate:false, pinchRotate:true, dragPan:true}); 
Run Code Online (Sandbox Code Playgroud)

如何在创建地图对象后禁用捏合旋转,以便加载和显示地图后禁用地图旋转。

jquery openlayers-3

2
推荐指数
1
解决办法
1713
查看次数

canvas.toDataURL()下载大小限制

我试图使用canvas.toDataURL()下载整个画布图像.图像是在画布上呈现的地图(打开图层3).

在Firefox中,我可以使用以下内容通过点击链接下载地图:

var exportPNGElement = document.getElementById('export_image_button');

if ('download' in exportPNGElement) {
    map.once('postcompose', function(event) {
    var canvas = event.context.canvas;
    exportPNGElement.href = canvas.toDataURL('image/png');
});

map.renderSync();

} else {
alert("Sorry, something went wrong during our attempt to create the image");
}
Run Code Online (Sandbox Code Playgroud)

但是在Chrome和Opera中,我对链接的大小限制.我必须在物理上使窗口更小,以便下载工作.

浏览器之间存在大小限制差异,Chrome特别受限制.这里的类似帖子(现在已超过2年)表明了一个广泛的服务器端解决方法:

canvas.toDataURL()用于大画布

是否有客户端为此工作?

html javascript html5 canvas

2
推荐指数
1
解决办法
3905
查看次数

在 OpenLayers 3 中的地图旋转期间旋转要素

我有一个矢量图层,其特征具有旋转属性。我使用旋转属性来定义样式属性中功能图标的方向,如下所示:

var style_outer = new ol.style.Style({
 image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
     anchor: [0.5, 0.5],
     anchorXUnits: 'fraction',
     anchorYUnits: 'fraction',
     src: './images/Feature_icons/Logo_Arrow_07.png',
     rotation: rotation,
     scale: photo_icon_resolution_function()
   }))
});
Run Code Online (Sandbox Code Playgroud)

其中旋转是根据属性+地图旋转角度定义的,如下所示:

var map_rotation = map.getView().getRotation();
var rotation = feature.get(bearing) + map_rotation;
Run Code Online (Sandbox Code Playgroud)

当用户旋转地图时,图标不会实时旋转以匹配。仅当用户移动地图或旋转后与地图交互时,它才会捕捉到正确的角度。这是有道理的,因为只有当这些事情发生时才会调用样式函数。

我的问题是,如何在用户旋转地图的同时旋转图标?

我尝试捕获旋转事件,如下所示:

map.getView().on('propertychange', function(e) 
    {
       loaded_layers[p].getSource().forEachFeature(function(feature){
       feature.setStyle(Photo_Style(feature));
       feature.changed();  //This is an alternative which also works
    });

});
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为它在旋转过程中触发,但它仍然不会在旋转过程中更新图标,只有在用户停止旋转之后(这当然是必须让用户平移地图才能获取更新的改进,但是仍然不是我要找的)。

openlayers-3

2
推荐指数
1
解决办法
1867
查看次数

grid.arrange 从 gridExtras 退出,更新后“gList”中只允许“grobs”

我使用包“VennDiagram”绘制了四个称为 P1、P2、P3、P4 的维恩图。然后想 grid.arrange 将四个图形放在一页上。

我使用的代码是:

 P1=draw.pairwise.venn(20,63,6,category = c("blastp", "HMM"), lty =rep("blank",2),fill = c("#9067A7", "#9067A7"), alpha = rep(0.5, 2), cat.pos = c(0,0),cat.dist = rep(0.025, 2),inverted=TRUE)
 P2=draw.pairwise.venn(3,242,3,category = c("blastp", "HMM"), lty = rep("blank",2),fill = c("#AB6857", "#AB6857"), alpha = rep(0.5, 2), cat.pos = c(0,0),cat.dist = rep(0.025, 2))
 P3=draw.pairwise.venn(7,107,0,category = c("blastp", "HMM"), lty = rep("blank",2),fill = c("#bc767c", "#bc767c"), alpha = rep(0.5, 2), cat.pos = c(0,0),cat.dist = rep(0.025, 2))
 P4=draw.pairwise.venn(11,1,0,category = c("blastp", "HMM"), lty = rep("blank",2),fill = c("#628130", "#628130"), alpha = rep(0.5, 2), cat.pos …
Run Code Online (Sandbox Code Playgroud)

r venn-diagram

2
推荐指数
1
解决办法
6033
查看次数

html5 输入“需要”安全验证技术吗?

我担心网络安全和required输入标签上 HTML5 单词的使用。我试图将它用作“表单输入验证”的一部分。在输入标签上使用 HTML5“必需”对于验证来说是可靠的,还是很容易被试图绕过输入字段要求的用户操纵。

我搜索了有关 html 安全性的信息,但发现很少。

谢谢

html security input required web

2
推荐指数
1
解决办法
1775
查看次数

使用OpenGL中的过量使用vsync的麻烦

我拼命想让Vsync在我的OpenGL应用程序中运行.这是至关重要的统计数据:

我正在使用Windows,在C++ OpenGL中编码,我正在使用FreeGLUT进行OpenGL上下文(双缓冲).我知道要让交换缓冲区在Windows中等待垂直同步,你需要调用wglSwapIntervalEXT().

我的代码确实称之为(正如您将在下面看到的那样),但我仍然在进行垂直撕裂.我设法阻止它的唯一方法是调用glFinish(),这当然会带来与之相关的显着性能损失.

main()函数的相关部分如下所示:

//Initiating glut window
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowSize (initial_window_width, initial_window_height);
glutInitWindowPosition (100, 100);
int glut_window_hWnd = glutCreateWindow(window_title.c_str()); 

//Setting up swap intervals
PFNWGLSWAPINTERVALEXTPROC       wglSwapIntervalEXT = NULL;
PFNWGLGETSWAPINTERVALEXTPROC    wglGetSwapIntervalEXT = NULL;

if (WGLExtensionSupported("WGL_EXT_swap_control"))
{
// Extension is supported, init pointers.
wglSwapIntervalEXT = PFNWGLSWAPINTERVALEXTPROC)wglGetProcAddress("wglSwapIntervalEXT");

// this is another function from WGL_EXT_swap_control extension
wglGetSwapIntervalEXT = (PFNWGLGETSWAPINTERVALEXTPROC)wglGetProcAddress("wglGetSwapIntervalEXT");
}

wglSwapIntervalEXT (1)

init ();

glutMainLoop();    ///Starting the glut loop
return(0);
Run Code Online (Sandbox Code Playgroud)

我应该指出wglInitSwapControlARB函数的返回是真的,因此支持扩展.

c++ windows opengl freeglut vsync

1
推荐指数
1
解决办法
5748
查看次数

Three.js 和 Tween.js 动画链不循环

我正在尝试使用 Tween.js 库转换 Three.js 多维数据集。

通过创建两个补间对象,我可以来回移动立方体:

var start_position = { x : 0.0 , y: 0.0 };
var target = { x : 3.0, y: 0.0 };

var tween_to = new TWEEN.Tween(start_position)
            .to(target, 2000);



var start_position2 = { x : 3.0 , y: 0.0 };
var target2 = { x : 0.0, y: 0.0 };

var tween_fro = new TWEEN.Tween(start_position2)
            .to(target2, 1000);



tween_to.onUpdate(onUpdate);
tween_fro.onUpdate(onUpdate);

function onUpdate()
{
  cube.position.x = this.x;
  cube.position.y = this.y;
};

tween_to.chain(tween_fro);

tween_to.start();
Run Code Online (Sandbox Code Playgroud)

然后在我的动画循环中我有:

TWEEN.update(); …
Run Code Online (Sandbox Code Playgroud)

javascript three.js tween.js

1
推荐指数
1
解决办法
3972
查看次数

OpenLayers 3 hasFeatureAtPixel 图层过滤器

我正在尝试使用取自官方 OL3 示例页面的以下方法创建鼠标悬停事件:

http://openlayers.org/en/latest/examples/earthquake-clusters.html

我只需要在悬停在特定图层上时触发操作。查阅官方文档后,我发现您可以将图层过滤器功能与 hasFeatureAtPixel 一起使用,但它似乎不起作用。

map.on('pointermove', function(evt) {
    if (evt.dragging) {
       return;
    }
    var pixel = map.getEventPixel(evt.originalEvent);
    var hit = map.hasFeatureAtPixel(pixel, function(feature, layer) {
        console.log(layer);
        console.log(feature);       
    });
});
Run Code Online (Sandbox Code Playgroud)

console.log 调用导致在控制台中给出特征对象,但没有图层对象,这些返回为“未定义”。这是我需要测试图层是否正确的图层对象。

任何想法为什么这不起作用?

javascript openlayers-3

1
推荐指数
1
解决办法
2698
查看次数

如何在整个工作表中查找包含字符串的单元格

我想在包含特定字符串的工作表中找到一个单元格。

我不会确切知道电子表格中将包含多少列或行,因此为什么要使用CurrentRegion

这是我正在尝试的:

=FIND("Data String", Range("A1").CurrentRegion)
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

0
推荐指数
1
解决办法
8070
查看次数