我最近遇到过JXMapKit,我不是一个强大的程序员,但想在我的应用程序中使用它。我正在使用Eclipse并已构建GUI应用程序。我想将JXMapKit合并到我的GUI中。我使用要在地图上显示路径的叠加层的坐标来表示纬度/经度的ArrayList。

根据我的阅读,可以轻松地将它合并到Swing中,但是还没有找到足够简单的示例让我理解和入门。我创建了一个新项目,只是想调出地图,但遇到错误。据我了解,它无法加载图块?可能是一个错误的jar文件,还是需要设置磁贴提供程序?在此先感谢您的帮助。

import javax.swing.JFrame;
import org.jdesktop.swingx.JXMapKit;
import org.jdesktop.swingx.JXMapKit.DefaultProviders;

public class MapTest {
    public static void createGui(){
        JFrame frame = new JFrame();
        frame.setVisible(true);
        frame.setSize(400, 400);
        JXMapKit mapViewer = new JXMapKit();
        mapViewer.setDefaultProvider(DefaultProviders.OpenStreetMaps);
        mapViewer.setDataProviderCreditShown(true);
        frame.add(mapViewer);
    }

    public static void main(String[] args){
        createGui();
    }
}


这些是错误:

Failed to load a tile at url: http://tile.openstreetmap.org/6/32/21.png
 java.lang.NoSuchMethodError: org.jdesktop.swingx.util.PaintUtils.loadCompatibleImage(Ljava/io/InputStream;)Ljava/awt/image/BufferedImage;
 at org.jdesktop.swingx.mapviewer.DefaultTileFactory$TileRunner.run(DefaultTileFactory.java:375)
 at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
 at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
 at java.util.concurrent.FutureTask.run(Unknown Source)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 at java.lang.Thread.run(Unknown Source)


如果我将setDefaultProvider设置为OpenStreetMaps,它将仍然无法加载默认提供程序。

最佳答案

mapViewer.setDefaultProvider(DefaultProviders.OpenStreetMaps);


为。。改变

mapViewer.setDefaultProvider(org.jdesktop.swingx.JXMapKit.DefaultProviders.OpenStreetMaps);

10-04 14:32