使用 UnfoldingMaps 库和 Eclipse 制作基本地图。它用于教育目的(参加 OOP Java 课程),并且当尝试使用地图对象访问 google 地图提供程序时:
AbstractMapProvider provider = new Google.GoogleProvider();
然后使用
draw()
方法创建地图。我运行小程序(在 Eclipse 上),它是第一次运行。但是当我第二次运行它后,它开始给我以下错误:
Unfolding Map v0.9.7 (UCSD edition)
Using OpenGLMapDisplay with processing.opengl.PGraphics2D
java.io.IOException: Server returned HTTP response code: 403 for URL: http://mt1.google.com/vt/lyrs=m@116&hl=de&x=180&y=414&z=10&s=Galileo
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1876)
at sun.net.www.protocol.http.HttpURLConnection.access$200(HttpURLConnection.java:91)
at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1466)
at sun.net.www.protocol.http.HttpURLConnection$9.run(HttpURLConnection.java:1464)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:782)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1463)
at java.net.URL.openStream(URL.java:1045)
at processing.core.PApplet.createInputRaw(PApplet.java:7267)
at processing.core.PApplet.createInput(PApplet.java:7235)
at processing.core.PApplet.loadBytes(PApplet.java:7462)
at processing.core.PApplet.loadImage(PApplet.java:5879)
at de.fhpotsdam.unfolding.tiles.TileLoader.getTileFromUrl(Unknown Source)
at de.fhpotsdam.unfolding.tiles.TileLoader.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
The file "http://mt1.google.com/vt/lyrs=m@116&hl=de&x=180&y=414&z=10&s=Galileo" is missing or inaccessible, make sure the URL is valid or that the file has been added to your sketch and is readable.
我在网上看到的可能原因:
1.6 java编译器安全问题 尝试使用谷歌API访问图块滥用服务条款(真的不太了解这些条款,因为这是我的第一个地图,不确定如何访问图块) 超过限制的多个请求(在我的情况下不可能,因为我第二次运行小程序时,它开始给我错误)
我只是想找到一种可能的方法来为我的项目使用谷歌地图提供商。我不想使用其他提供商(例如微软),因为在我看来谷歌的更完整。
非常感谢任何帮助。
也许您正在使用多个对象在代码中提供地图,例如:
AbstractMapProviderprovider1 = new Google.GoogleTerrainProvider();
AbstractMapProviderprovider2 = new Google.GoogleTerrainProvider();
相反,在整个代码中仅使用一个对象提供程序,然后重置您的设备 IP 地址,或重新启动路由器,因为即使在修复您的代码后,由于滥用,Google 也不会允许该 IP 地址使用该提供程序服务条款。
这将解决问题。
您可能超出了当天允许向 Google 查询的数量。如果发生这种情况,您可以使用替代地图(http://unfoldingmaps.org/javadoc/de/fhpotsdam/unfolding/providers/package-summary.html)提供程序或离线工作。您已报告,您只会被 Google 屏蔽 24 小时,以便您可以在那时使用提供商恢复。
当你在做 UCSD 的“Java 面向对象编程”项目时 当然,在HelloWorld类中注释掉这段代码
AbstractMapProvider provider = new Google.GoogleTerrainProvider();
以及离线部分的这段代码
provider = new MBTilesMapProvider(mbTilesString);
并删除这段代码中的Provider
map1 = new UnfoldingMap(this, 50, 50, 350, 500);
这里不使用google作为提供者,而是使用UnfoldingMap来显示地图。 确保您使用 Java 8 并且在类中有一个 main 方法
public static void main(String[] args) {
PApplet.main("module1.HelloWorld");
}
参考此链接:https://github.com/tillnagel/unfolding/issues/145#issuecomment-596135265