在实现区域控制的时候,突然想到,能不能在Java中调用javascript来实现呢?查了一下,还真的可以在Java中调用js。下面是代码:
String dp = "114.018107,22.672359|114.151774,22.66142|114.153212,22.577351|114.092558,22.542373|114.006896,22.548782|114.01322,22.596571|113.981025,22.659019|113.981025,22.659019|";
String carPoiont = "114.151774,22.66142";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
String jsFileName = "WebRoot/Resources/AreaJud.js"; // 读取js文件
FileReader reader = new FileReader(jsFileName); // 执行指定脚本
engine.eval(reader);
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)engine; // 调用merge方法,并传入两个参数
// c = merge(2, 3);
Double c = (Double)invoke.invokeFunction("stringJudge", dp, carPoiont);
System.out.println("c = " + c);
}
reader.close();
实现是实现了,但是Java调用javascript还是有诸多限制,比如在js中我们会用到大量的浏览器对象,比如document、alert等,在Java中调用javascript的时候这些对象都不能使用,所以,我的功能只能换一种方式来实现了。