小编msc*_*c87的帖子

撤消OL3中的最后一个点将删除最后一个段

我需要在我的网络应用程序中使用一项功能来撤消最后一点.已经有一些解决方案,如对于给定的问题,它可以处理它在一定程度上:

var undo = false; // set this to true in the Esc key handler
var draw = new ol.interaction.Draw({
// ...
geometryFunction: function(coords, geom) {
    if (!geom) {
        geom = new ol.geom.LineString(null);
    }
    if (undo) {
        if (coords.length > 1) {
            coords.pop();
        }
        undo = false;
    }
    geom.setCoordinates(coords);
    return geom;
    }
});
Run Code Online (Sandbox Code Playgroud)

但似乎有一个我无法弄清楚的错误.

使用这个plunker你可以尝试我要解释的内容:

如果你绘制一条带有一些顶点的线然后撤消(点击ESC)直到线上的最后一个点被移除,然后在刚刚撤消的同一点完成(或接近足够),最后一段将被删除,为什么?

由数字解释:

1-绘制线要素

在此输入图像描述

2-撤消最后(第三)点 在此输入图像描述

3-在相同点处(或接近)完成线. 在此输入图像描述

4 - 删除最后一个段. 在此输入图像描述

我试了好几次就发生了.如果添加一个不接近移除的点或添加多个点,则不会发生这种情况.

编辑

似乎OL3检查几何的最后两个坐标,如果它们相同则决定完成绘图会话,并删除最后一个.我尝试了下面的代码:

function geometryChange(coordinates, geometry){
if (!geometry) {
    geometry = new ol.geom.LineString(null); …
Run Code Online (Sandbox Code Playgroud)

javascript undo openlayers-3

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

单元测试使用Karma和Jasmine进行反应

我是个新手,我已经使用React 14编写了没有任何编译器的代码。现在,我想使用Karma-Jasmine进行单元测试,但是看来我的测试未能呈现该应用程序。

我有以下结构:

node_modules
MyApp/
    /js/ *.js
    /test/*.js
Karma.conf.js
package.json
index.html
Run Code Online (Sandbox Code Playgroud)

我的index.html:

<html>
<div id="content"></div>
<script src="js/react-0.14.7.js"></script>
<script src="js/react-dom-0.14.7.js"></script>

<script src="js/App.js"></script>
<script src="js/main.js"></script>
<link rel="stylesheet" href="style.css">
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的main.js:

ReactDOM.render(React.createElement(App), document.getElementById('content'))
Run Code Online (Sandbox Code Playgroud)

我的应用程序如下所示:

var h = React.createElement;

var Command = React.createClass({
   render: function(){
   return h(....)
  }
})
Run Code Online (Sandbox Code Playgroud)

我的测试代码如下:

describe('App', function() {
beforeEach(function() {
fixture.load('index.htm');
});

beforeEach(function () {
ReactDOM.render(React.createElement(App),  document.getElementById('content'));
});

it('accepts elements', function() {
  document.getElementById('x').value = 1;
  document.getElementById('y').value = 2;
  document.getElementById('setbtn').click();
});

});
Run Code Online (Sandbox Code Playgroud)

这是错误:

Uncaught ReferenceError: App is not defined …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jasmine reactjs karma-jasmine

4
推荐指数
2
解决办法
2163
查看次数

如果按下Esc,则打破循环

我用JAVA语言编写了一个程序,它使用Scanner类接受来自控制台的输入....

现在我想在我的代码中添加此功能,以便在用户按下Esc Button时存在循环(while).到目前为止,我认为键盘类可以帮助我,但它就像扫描仪...我试图使用事件,但不知道如何正确使用它们....

源代码:

    package switchCase_v1;

     import cs1.Keyboard;
     import java.util.EventObject;
     import java.awt.AWTEvent;
     import java.awt.event.KeyEvent;
     import java.awt.event.ComponentEvent;
     import java.awt.event.InputEvent;
     import java.util.*;

      public class SwithCase {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        System.out.println("enter the name or number of month: ");
        int monthNumber = input.nextInt();

        while (true) {
            KeyEvent button;
            if (button.getKeyCode() == 27)
                break;
            else if (monthNumber == '\n') {
                System.out.println("enter a number");
                monthNumber = input.nextInt();
            } else {
                switch (monthNumber) { …
Run Code Online (Sandbox Code Playgroud)

java loops break

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

如何以及在何处在代码中添加ActionListener?

我写了下面的代码,里面有一个文本字段和一个按钮.输入字符并按下按钮后,将创建一个标签,其标题与在字段中输入的标题相同.

几个选项卡可以以相同的方式创建.....现在再次在新选项卡中,文本字段和按钮存在一个长文本窗格以显示结果....

我想在每个标签的文本窗格中显示输入到文本字段的文本...

现在请带领我学习如何以及在哪里将监听器放在选项卡的按钮上......并推荐任何其他必需的监听器(我认为应该有另一个监听器来指导我关注或选择的选项卡).

应该提到的是,我已将这些选项卡添加到数组列表中以供任何重用,但我不知道我是否正确或如何使用它?

package test;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;

public class TestGUI extends JFrame {


    private JTextField jTextField1;
    private JButton jButton1;
    static ArrayList<JPanel> ary = new ArrayList<JPanel>();
    private int tabIndex = 0;
    static int index = 0;
    private JTabbedPane tabbedPane;

    /**
    * @param args
    */
    public TestGUI() {

        super("Testing Tab Frame");
        setLayout(null);

        Handler but1 = new Handler();

        jTextField1 = new JTextField();
        jTextField1.setVisible(true);
        jTextField1.setBounds(12, 12, …
Run Code Online (Sandbox Code Playgroud)

java swing actionlistener jtabbedpane

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

如何使用递归生成器遍历二叉树?

我试图遍历在以下代码中创建的二叉树.确切地说,二叉树是一个类,应该包含一个调用另一个函数的迭代器,即inorder().这个方法应该是一个递归生成器并在每次迭代中产生节点的值.我试图创建一个跟随节点的字典但是当我尝试调用inorder()方法时,它不起作用.有什么遗漏点我不知道吗?我使用while而它创建了树的左侧字典(这是一种笨拙的方式).请帮我完成这段代码.

d=[]

# A binary tree class.
class Tree(object):
    def __init__(self, label, left=None, right=None):
        self.label = label
        self.left = left
        self.right = right
        self.d=dict()
    def __repr__(self, level=0, indent="    "):
        s = level * indent + self.label
        if self.left:
            s = s + "\n" + self.left.__repr__(level + 1, indent)
        if self.right:
            s = s + "\n" + self.right.__repr__(level + 1, indent)
        return s

def traverse(self):
    if self.left:
        lastLabel=self.label
        self.left.traverse()
    if self.right:
        lastLabel=self.label
        d.append(lastLabel)
        self.right.traverse()
    else:
        d.append(self.label)
    return d

def __iter__(self):
    return …
Run Code Online (Sandbox Code Playgroud)

python recursion iterator generator

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

在Java中的for循环中创建几个新对象

我想在for循环中从类中创建几个对象.但我不知道如何编码.我写的内容创建了一个新对象,但它覆盖了前一个对象.

package assginment1_version4;

import java.util.*;

public class Client {

public static void main (String[] args) {
    System.out.println ("this is a bill database");
    System.out.println ("add a user?(Y/N)");

    Scanner input = new Scanner(System.in);
    String answer = input.nextLine ();
    ArrayList ary = new ArrayList ();

    for (int i=1 ; i < 100; i++) {
        if (answer.equalsIgnoreCase("y")) {
            Bill bill1 = new Bill();
            System.out.println("user first name:");
            bill1.setFname (input.nextLine());
            System.out.println("user Last name:");
            bill1.setLname (input.nextLine());
            System.out.println ("add a user?(Y/N)");
            answer = input.nextLine ();
        } else if …
Run Code Online (Sandbox Code Playgroud)

java

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

通过关系提取连接两个实例的实例链

我想通过询问SPARQL查询来提取我的本体的两个实例之间的实例链.例如,在下图中,如果我想知道A如何连接到E,则查询的结果应该类似于A,B,D,F,E的列表.

在此输入图像描述

应该如何设计本体并建立查询?它甚至可能吗?

rdf ontology instance sparql protege

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

如何在字符串中查找特殊字符

我有一个Python代码,想要在字符串中找到元音.我写的代码遵循....我尝试使用For-Loop的不同组合,但它抛出了两个不同的错误;

  1. 'int'对象不可迭代,
  2. 字符串索引必须是整数,而不是str.

如何找到一行中的所有元音?

str1 = 'sator arepo tenet opera rotas'
vow1 = [str1[i] for i in str1 if  str1[i] is 'a' | 'e' | 'o']
Run Code Online (Sandbox Code Playgroud)

python string for-loop

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