Eclipse + Processing 3.2.1 + UnfoldingMaps 的错误
Bug with Eclipse + Processing 3.2.1 + UnfoldingMaps
我下载了最新的 JOGL Processing 3.2.1 并尝试编译此代码:
import de.fhpotsdam.unfolding.UnfoldingMap;
import de.fhpotsdam.unfolding.geo.Location;
import de.fhpotsdam.unfolding.providers.AbstractMapProvider;
import de.fhpotsdam.unfolding.providers.Google;
import de.fhpotsdam.unfolding.providers.MBTilesMapProvider;
import de.fhpotsdam.unfolding.providers.Microsoft;
import de.fhpotsdam.unfolding.providers.OpenStreetMap;
import de.fhpotsdam.unfolding.providers.Yahoo;
import de.fhpotsdam.unfolding.utils.MapUtils;
import processing.core.PApplet;
public class TwoMaps extends PApplet {
public UnfoldingMap map1;
public UnfoldingMap map2;
public static void main(String[] args) {
PApplet.main("TwoMaps");
}
public void settings() {
size(800, 600, P2D);
}
public void setup() {
String mbTilesString = "blankLight-1-3.mbtiles";
final boolean offline = false;
this.background(200, 200, 200);
AbstractMapProvider provider = new Microsoft.RoadProvider();
int zoomLevel = 10;
if (offline) {
provider = new MBTilesMapProvider(mbTilesString);
zoomLevel = 3;
}
map1 = new UnfoldingMap(this, 50, 50, 350, 500, provider);
map2 = new UnfoldingMap(this, 425, 50, 350, 500, provider);
map1.zoomAndPanTo(zoomLevel, new Location(32.9f, -117.2f));
map2.zoomAndPanTo(zoomLevel, new Location(55.45f, 40f));
MapUtils.createDefaultEventDispatcher(this, map1);
MapUtils.createDefaultEventDispatcher(this, map2);
}
public void draw() {
map1.draw();
map2.draw();
}
}
然后我在控制台中收到这条消息,但在互联网上找不到任何东西:
Unfolding Map v0.9.6
java.lang.RuntimeException: java.lang.NoSuchFieldError: quality
at processing.opengl.PSurfaceJOGL.run(PSurfaceJOGL.java:461)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchFieldError: quality
at de.fhpotsdam.unfolding.mapdisplay.OpenGLMapDisplay.<init>(Unknown Source)
at de.fhpotsdam.unfolding.mapdisplay.MapDisplayFactory.getMapDisplay(Unknown Source)
at de.fhpotsdam.unfolding.UnfoldingMap.<init>(Unknown Source)
at de.fhpotsdam.unfolding.UnfoldingMap.<init>(Unknown Source)
at TwoMaps.setup(TwoMaps.java:47)
at processing.core.PApplet.handleDraw(PApplet.java:2387)
at processing.opengl.PSurfaceJOGL$DrawListener.display(PSurfaceJOGL.java:871)
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
at jogamp.opengl.GLAutoDrawableBase.run(GLAutoDrawableBase.java:443)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759)
at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81)
at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452)
at com.jogamp.opengl.util.FPSAnimator$MainTask.run(FPSAnimator.java:178)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
但是如果我不在 size()
方法中使用渲染 P2D
那么它就可以工作,但是工作很糟糕而且很慢并且只显示一张地图。
但最有趣的是,如果我使用 Processing 2.2.1,其中 scetch 的基础 class 是 java.Applet,那么代码甚至可以在 [=13= 中使用 P2D
] 方法。
AMD Mobility Radeon HD 5000 驱动程序是最新的。
看起来 Unfolding Maps 与 Processing 3 不兼容。现在您将不得不坚持使用 Processing 2。
如果您真的非常非常需要使用 Processing 3,您可以尝试这里的答案:Creating UnfoldingMap instance with java.lang.NoSuchFieldError: quality error
但您最好还是回到处理 2。
另请注意:您根本不应该下载 JOGL。 Processing 附带了它需要的 JOGL 版本。您应该使用该版本的 JOGL,而不是您单独下载的更新版本。
我下载了最新的 JOGL Processing 3.2.1 并尝试编译此代码:
import de.fhpotsdam.unfolding.UnfoldingMap;
import de.fhpotsdam.unfolding.geo.Location;
import de.fhpotsdam.unfolding.providers.AbstractMapProvider;
import de.fhpotsdam.unfolding.providers.Google;
import de.fhpotsdam.unfolding.providers.MBTilesMapProvider;
import de.fhpotsdam.unfolding.providers.Microsoft;
import de.fhpotsdam.unfolding.providers.OpenStreetMap;
import de.fhpotsdam.unfolding.providers.Yahoo;
import de.fhpotsdam.unfolding.utils.MapUtils;
import processing.core.PApplet;
public class TwoMaps extends PApplet {
public UnfoldingMap map1;
public UnfoldingMap map2;
public static void main(String[] args) {
PApplet.main("TwoMaps");
}
public void settings() {
size(800, 600, P2D);
}
public void setup() {
String mbTilesString = "blankLight-1-3.mbtiles";
final boolean offline = false;
this.background(200, 200, 200);
AbstractMapProvider provider = new Microsoft.RoadProvider();
int zoomLevel = 10;
if (offline) {
provider = new MBTilesMapProvider(mbTilesString);
zoomLevel = 3;
}
map1 = new UnfoldingMap(this, 50, 50, 350, 500, provider);
map2 = new UnfoldingMap(this, 425, 50, 350, 500, provider);
map1.zoomAndPanTo(zoomLevel, new Location(32.9f, -117.2f));
map2.zoomAndPanTo(zoomLevel, new Location(55.45f, 40f));
MapUtils.createDefaultEventDispatcher(this, map1);
MapUtils.createDefaultEventDispatcher(this, map2);
}
public void draw() {
map1.draw();
map2.draw();
}
}
然后我在控制台中收到这条消息,但在互联网上找不到任何东西:
Unfolding Map v0.9.6
java.lang.RuntimeException: java.lang.NoSuchFieldError: quality
at processing.opengl.PSurfaceJOGL.run(PSurfaceJOGL.java:461)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchFieldError: quality
at de.fhpotsdam.unfolding.mapdisplay.OpenGLMapDisplay.<init>(Unknown Source)
at de.fhpotsdam.unfolding.mapdisplay.MapDisplayFactory.getMapDisplay(Unknown Source)
at de.fhpotsdam.unfolding.UnfoldingMap.<init>(Unknown Source)
at de.fhpotsdam.unfolding.UnfoldingMap.<init>(Unknown Source)
at TwoMaps.setup(TwoMaps.java:47)
at processing.core.PApplet.handleDraw(PApplet.java:2387)
at processing.opengl.PSurfaceJOGL$DrawListener.display(PSurfaceJOGL.java:871)
at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
at jogamp.opengl.GLAutoDrawableBase.run(GLAutoDrawableBase.java:443)
at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759)
at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81)
at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452)
at com.jogamp.opengl.util.FPSAnimator$MainTask.run(FPSAnimator.java:178)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
但是如果我不在 size()
方法中使用渲染 P2D
那么它就可以工作,但是工作很糟糕而且很慢并且只显示一张地图。
但最有趣的是,如果我使用 Processing 2.2.1,其中 scetch 的基础 class 是 java.Applet,那么代码甚至可以在 [=13= 中使用 P2D
] 方法。
AMD Mobility Radeon HD 5000 驱动程序是最新的。
看起来 Unfolding Maps 与 Processing 3 不兼容。现在您将不得不坚持使用 Processing 2。
如果您真的非常非常需要使用 Processing 3,您可以尝试这里的答案:Creating UnfoldingMap instance with java.lang.NoSuchFieldError: quality error
但您最好还是回到处理 2。
另请注意:您根本不应该下载 JOGL。 Processing 附带了它需要的 JOGL 版本。您应该使用该版本的 JOGL,而不是您单独下载的更新版本。