将处理应用程序导出到Web处理IDE

时间:2014-02-18 17:54:30

标签: javascript java processing processing.js processing-ide

我正在与Processing合作,尝试为美国健康保险的人数开发一个简单的数据可视化应用程序。

我的草图在我的机器上本地工作,但我尝试使用处理IDE中提供的Javascript模式将其导出到Web。

生成一个文件夹,其中包含许多文件,包括HTML页面和草图的JS文件。但是,当我尝试从LocalHost

加载页面时出现此错误
Uncaught Processing.js: Unable to execute pjs sketch: ReferenceError: ListstateMarkers is not defined 

我的Sketch(用Java)的完整代码在这里:

UnfoldingMap map;

List<Marker>stateMarkers;
List<Feature>states;

void setup() {
  size(800, 600);
  smooth();
  map = new UnfoldingMap(this);
  MapUtils.createDefaultEventDispatcher(this, map);
  states = GeoJSONReader.loadData(this, "ushealthinsurance2005.json");
  stateMarkers = MapUtils.createSimpleMarkers(states);
  stateMarkers = MapUtils.createSimpleMarkers(states);
  map.addMarkers(stateMarkers);
}

void draw() {
  map.draw();
  for (int i = 0; i < stateMarkers.size(); i++) {
    Marker state = stateMarkers.get(i);
    //Get information when mouse over a county.
    if (state.isInside(map, mouseX, mouseY)) {
      state.setColor(color(255, 0, 0));
    }
    else {
      state.setColor(color(0, 0, 255));
    }
  }
}

我应该指出我也在使用地图库Unfolding来生成地图图块并为应用程序添加交互性。

有没有人知道这里会发生什么?这是IDE本身的故障吗?有没有人遇到过类似的问题?

从JS文件中抛出错误的行就是这一行:

   throw "Processing.js: Unable to execute pjs sketch: " + e;

生成的代码超过10,000行,这使得实际调试问题非常困难。

感谢有关此问题的任何建议或帮助。

1 个答案:

答案 0 :(得分:0)

您不能在JavaScript中使用Java库,因此您无法在Processing.js中使用它们。

您有三种选择:

选项1:查找执行相同操作的JavaScript库。不幸的是,Unfolding Maps does not support JavaScript,所以你必须使用别的东西。 GoogleMaps API可能值得一试。 如果您想将自己的应用程序嵌入网站,这是唯一真正的选择。

选项2:部署为可运行的jar。您可以使用JarMatey之类的东西(注意:我编写了JarMatey)将Processing sketch打包为一个自解压的可运行jar。您无法将其嵌入网页,但可以使用Java Web Start更轻松地在网络上进行部署。

选项3:部署为打包的可执行文件。处理可以导出应用程序,但它们需要库目录而不是作为单个文件。相反,您可以创建一个可运行的jar,然后使用JWrapper之类的东西来创建单个文件的可执行文件。

注意:部署为applet并不是一个真正的选择。小程序已经死了,它们对你和你的用户来说都是一个巨大的痛苦。 Applet将在Java 9中弃用。