如何在Openstreetmap中突出显示MapMarkerDot? [英] How can I highlight a MapMarkerDot in Openstreetmap?

查看:177
本文介绍了如何在Openstreetmap中突出显示MapMarkerDot?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用了来自 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆