我最近遇到过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);