为什么我的自定义 JavaFX MapView 请求通过 OSM 获得 403 错误?

Why my custom JavaFX MapView request obtain 403 error by OSM?

我在 JavaFX 中为商业软件开发了自定义 MapView。 因为只有一个星期,我的所有请求都因 403 代码错误而失败(示例):

"Server returned HTTP response code: 403 for URL: http://tile.openstreetmap.org/9/245/206.png"

但是用Mozilla之类的浏览器请求成功。 我没有更改任何代码或配置,只是 OSM 将我列入黑名单。

但是,我认为,我正在遵循 osm 策略规则,例如同时只有 2 个连接、内存缓存系统、不下载高缩放的大区域。

如何合法访问分布式软件上的 OSM 磁贴用于商业用途? 篡夺 Mozilla User-Agent 可以是开发期间的即时解决方案,但在 ?

之后
   private void loadImage(Tile tile) {
      String url = tile.getRetriever().computeURL(tile);
      if(!waiters.contains(url)) {
        waiters.add(url);
        threadPool.execute(new ComparableRunnable(url,()->{

            try {
                if(!exist(tile)) {

                    Semaphore semaphore = new Semaphore(1);
                    semaphore.acquire();

                    Image image = new Image(url, true);

                    image.errorProperty().addListener((obs,old,val)->{
                        if(image.isError()) {
                            Outil.loggerConsole(image.getException());
                            semaphore.release();
                        }
                    });
                } catch (InterruptedException e) {
                    Outil.loggerConsole(e);
                }
            }));

"Server returned HTTP response code: 403 for URL: http://tile.openstreetmap.org/9/245/206.png"

How can legaly acces to OSM tiles on distributed software for commercial usage ?

通过使用 third-party 提供商或 运行 您自己的磁贴服务器。 OSM 的图块服务器 用于商业用途。参见Tile Usage Policy。引用有趣的部分:

OpenStreetMap’s own servers are run entirely on donated resources. They have strictly limited capacity.

[...]

OpenStreetMap data is free for everyone to use. Our tile servers are not.

[...]

Heavy use (e.g. distributing an app that uses tiles from openstreetmap.org) is forbidden without prior permission from the System Administrators.

请参阅 Alternative OpenStreetMap Tile Providers 了解解决方案。