gpt4 book ai didi

java - JMapViewer 为离线 View 添加图 block

转载 作者:行者123 更新时间:2023-12-04 05:46:09 25 4
gpt4 key购买 nike

您好,我正在 Java 中使用此示例来尝试加载 OpenStreetMaps 离线图块,

例如我在 C:/OSM/tiles/上有我的瓷砖

但我需要知道如何在 map (JMapViewer)类中添加此信息以在本地加载图块。

非常感谢您的帮助,这是我的来源:

//License: GPL. Copyright 2008 by Jan Peter Stotz

import org.openstreetmap.gui.jmapviewer.JMapViewer;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
*
* Demonstrates the usage of {@link JMapViewer}
*
* @author Jan Peter Stotz
*
*/
public class Demo extends JFrame {

public Demo() {
super("JMapViewer Demo");
setSize(400, 400);
final JMapViewer map = new JMapViewer();
setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
JPanel panel = new JPanel();
add(panel, BorderLayout.NORTH);
final JCheckBox showMapMarker = new JCheckBox("Map markers visible");
showMapMarker.setSelected(map.getMapMarkersVisible());
showMapMarker.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
map.setMapMarkerVisible(showMapMarker.isSelected());
}
});
panel.add(showMapMarker);
final JCheckBox showTileGrid = new JCheckBox("Tile grid visible");
showTileGrid.setSelected(map.isTileGridVisible());
showTileGrid.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
map.setTileGridVisible(showTileGrid.isSelected());
}
});
panel.add(showTileGrid);
final JCheckBox showZoomControls = new JCheckBox("Show zoom controls");
showZoomControls.setSelected(map.getZoomContolsVisible());
showZoomControls.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
map.setZoomContolsVisible(showZoomControls.isSelected());
}
});
panel.add(showZoomControls);
add(map, BorderLayout.CENTER);

//
// map.addMapMarker(new MapMarkerDot(49.814284999, 8.642065999));
// map.addMapMarker(new MapMarkerDot(49.91, 8.24));
// map.addMapMarker(new MapMarkerDot(49.71, 8.64));
// map.addMapMarker(new MapMarkerDot(48.71, -1));
// map.addMapMarker(new MapMarkerDot(49.807, 8.644));

map.setDisplayPositionByLatLon(-0.223056, -78.5126, 11);
}

/**
* @param args
*/
public static void main(String[] args) {
new Demo().setVisible(true);
}

}

最佳答案

一个不需要修改 JMapViewer 并重新编译它的更好的替代方法是提供您自己的 TileSource 实现,如图所示 here .

OfflineOsmTileSource ,并像博客文章所说的那样使用它。

简单而优雅。你所需要的只是一些本地存储的 osm tile,我假设你已经有了。

关于java - JMapViewer 为离线 View 添加图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10657239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com