gpt4 book ai didi

java - 如何在 Openstreetmap 中突出显示 MapMarkerDot?

转载 作者:行者123 更新时间:2023-11-29 04:55:44 26 4
gpt4 key购买 nike

我使用了来自 http://svn.openstreetmap.org/applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/Demo.java 的代码为我的 swing 应用程序启动并运行 map 。

我添加了一些 MapMarkerDot 来指示 map 中的一些点并使用了 how can i get the mouse click position from my JMapViewer world map确定是否已选择一个点,但我如何实际显示已选择特定的 MapMarkerDot?我想添加某种类似于 http://bikes.oobrien.com/london/#zoom=14&lon=-0.1155&lat=51.4992 的边框但到目前为止我还没有看到成功。

非常感谢任何建议/引用。谢谢!

最佳答案

MapMarkerCirclepaint()MapMarkerDot 父实现忽略 Style 中指定的 Stroke ,但您可以扩展 MapMarkerCircle 以使用更大的 radius 并渲染任何内容。在下面的示例中,Update 按钮监听器显示了如何动态更改自定义标记的背景颜色。

image

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.util.Random;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import org.openstreetmap.gui.jmapviewer.Coordinate;
import org.openstreetmap.gui.jmapviewer.JMapViewer;
import org.openstreetmap.gui.jmapviewer.MapMarkerCircle;
import org.openstreetmap.gui.jmapviewer.MapMarkerDot;
import org.openstreetmap.gui.jmapviewer.Style;

/**
* @see http://stackoverflow.com/a/33857113/230513
*/
public class London {

private static final Random r = new Random();

private void display() {
JFrame f = new JFrame("London");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMapViewer map = new JMapViewer() {

@Override
public Dimension getPreferredSize() {
return new Dimension(320, 240);
}
};
Coordinate london = new Coordinate(51.5072, -0.1275);
map.setDisplayPosition(london, 16);
MyMarker dot = new MyMarker("", london);
map.addMapMarker(dot);
map.addMapMarker(new MapMarkerDot("London", london));
f.add(map);
f.add(new JButton(new AbstractAction("Update") {

@Override
public void actionPerformed(ActionEvent e) {
Style style = dot.getStyle();
style.setBackColor(Color.getHSBColor(r.nextFloat(), 1f, 1f));
style.setColor(Color.red);
map.repaint();
}
}), BorderLayout.SOUTH);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}

private static class MyMarker extends MapMarkerCircle {

public MyMarker(String name, Coordinate coord) {
super(null, name, coord, 12, STYLE.FIXED, getDefaultStyle());
}
}

public static void main(String[] args) {
EventQueue.invokeLater(new London()::display);
}
}

关于java - 如何在 Openstreetmap 中突出显示 MapMarkerDot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33848224/

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