UnfoldingMap 忙于在 draw() 上循环
UnfoldingMap busy looping on draw()
经过最初的一些麻烦后,我现在已经 UnfoldingMap
从 Eclipse 开始工作,如 the tutorial 中所述。这似乎工作正常,但 draw()
方法被高频率重复调用,导致 CPU 达到 100%。这种情况会无限期地继续下去,甚至在绘制完整张地图之后也是如此。这是非常简单的测试应用程序的代码:
public class SimpleMapApp extends PApplet {
UnfoldingMap map;
public void setup() {
size(800, 600);
map = new UnfoldingMap(this, new Microsoft.AerialProvider());
}
public void draw() {
map.draw();
}
public static void main(String[] args) {
PApplet.main("SimpleMapApp");
}
}
通过在 draw 方法中放置一个 sleep()
,我可以看出它与瓷砖绘制有关,每次调用 draw()
都会绘制几个瓷砖。我认为它还保持从服务器以高速率加载地图图块;至少 Google 在我一开始使用他们的服务器后,地图似乎已经禁止了我的 IP 地址。
如何在绘制完所有内容后停止对 draw()
的重复调用?
有几个选项可以控制调用 draw 方法的方式:
- 使用frameRate()
- 使用noLoop() and resume it using loop()
手动暂停执行
经过最初的一些麻烦后,我现在已经 UnfoldingMap
从 Eclipse 开始工作,如 the tutorial 中所述。这似乎工作正常,但 draw()
方法被高频率重复调用,导致 CPU 达到 100%。这种情况会无限期地继续下去,甚至在绘制完整张地图之后也是如此。这是非常简单的测试应用程序的代码:
public class SimpleMapApp extends PApplet {
UnfoldingMap map;
public void setup() {
size(800, 600);
map = new UnfoldingMap(this, new Microsoft.AerialProvider());
}
public void draw() {
map.draw();
}
public static void main(String[] args) {
PApplet.main("SimpleMapApp");
}
}
通过在 draw 方法中放置一个 sleep()
,我可以看出它与瓷砖绘制有关,每次调用 draw()
都会绘制几个瓷砖。我认为它还保持从服务器以高速率加载地图图块;至少 Google 在我一开始使用他们的服务器后,地图似乎已经禁止了我的 IP 地址。
如何在绘制完所有内容后停止对 draw()
的重复调用?
有几个选项可以控制调用 draw 方法的方式:
- 使用frameRate()
- 使用noLoop() and resume it using loop() 手动暂停执行