如何在Openstreetmap中突出显示MapMarkerDot? [英] How can I highlight a MapMarkerDot in Openstreetmap?
问题描述
我使用了来自 http的代码://svn.openstreetmap.org/applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/Demo.java 为我的swing应用程序启动并运行地图。
I used code from http://svn.openstreetmap.org/applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/Demo.java to get a map up and running for my swing application.
我添加了一些MapMarkerDot来指示地图中的某些点并使用如何从我的JMapViewer世界地图获取鼠标点击位置,以确定是否已选择一个点但是如何我可以实际显示已选择特定的MapMarkerDot吗?我想添加一些类似于 http的边框://bikes.oobrien.com/london/#zoom=14& lon = -0.1155& lat = 51.4992 但到目前为止我还没有看到成功。
I added a few MapMarkerDot to indicate some points in my map and used how can i get the mouse click position from my JMapViewer world map to identify whether a point has been selected but how can I actually show that a particular MapMarkerDot has been selected? I want to add some kind of border similar to http://bikes.oobrien.com/london/#zoom=14&lon=-0.1155&lat=51.4992 but so far I have not seen successful.
非常感谢任何建议/参考。谢谢!
Any suggestions/ references are well appreciated. Thanks!
推荐答案
MapMarkerDot
忽略中的paint()
> MapMarkerCircle 中指定的
,但您可以扩展 Stroke
样式 MapMarkerCircle
以使用更大的 radius
并渲染任何内容。在下面的示例中, Update 按钮侦听器显示如何动态更改自定义标记的背景颜色。
The MapMarkerDot
parent implementation of paint()
in MapMarkerCircle
ignores the Stroke
specified in Style
, but you can extend MapMarkerCircle
to use a larger radius
and render anything at all. In the example below, the Update button listener shows how to alter a custom marker's background color dynamically.
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);
}
}
这篇关于如何在Openstreetmap中突出显示MapMarkerDot?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!