当前位置: 首页 > 知识库问答 >
问题:

如何在OpenStreetMap中突出显示MapMarkerDot?

勾海超
2023-03-14

我使用http://svn.openstreetmap.org/applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/demo.java中的代码为我的swing应用程序创建并运行一个映射。

我添加了几个MapMarkerDot来指示地图中的一些点,并使用如何从JMapViewer世界地图中获取鼠标单击位置来识别是否选择了某个点,但如何实际显示特定的MapMarkerDot已被选中?我想添加类似于http://bikes.oobrien.com/london/#zoom=14&lon=-0.1155&lat=51.4992的边框,但是到目前为止还没有成功。

任何建议/参考都是非常感谢的。谢了!

共有1个答案

孙斌
2023-03-14

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

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);
    }
}
 类似资料:
  • 问题内容: 很快,我将被迫在Haskell中提出一个项目,该项目应该突出显示Java语法。我做了一些研究,发现Happy可能是一个解决方案(因为它是类似yacc的解析器)。还提到了野牛和帕尔塞克。由于我是Haskell的新手,所以我真的对启动该项目一无所知。任何提示都会有很大帮助。 谢谢! 问题答案: 由于我是Haskell的新手,所以我真的不知道如何启动该项目 啊,这才是真正的问题。要开始学习H

  • 搜索“adida shi”,应该会得到两个商品,一个是名称为“adidas shirts”,另一个是“adidas red shirts” 预期突出显示: 实际突出显示: 有什么想法让它工作吗?

  • 本文向大家介绍HTML 突出显示,包括了HTML 突出显示的使用技巧和注意事项,需要的朋友参考一下 示例 该<mark>元素是HTML5中的新元素,用于“由于其在另一个上下文中的相关性”而标记或突出显示文档中的文本。1 最常见的示例是用户输入搜索查询并显示结果以突出显示所需查询的搜索结果。 输出: 常见的标准格式是黄色背景上的黑色文本,但是可以使用CSS进行更改。

  • 问题内容: 我找不到能帮助我解决Angular中这个简单问题的东西。与位置路径进行比较时,所有答案都与导航栏相关。 我使用list和构建了一个动态表。当我单击一行时,我试图为该行分配一个css类(选中),以突出显示该行已被用户选中的事实,并从先前突出显示的行中删除了该行。 我缺少在选定的行和CSS类分配之间进行绑定的方法。 我在每个()上应用了代码, 但我缺少应用更改的逻辑。 我的代码-Plunk

  • 我在IntelliJ IDEA2020.1.2(终极版)中打开一个spring boot项目,并在实体中打开许多错误突出显示,例如: 无法解析表“角色” 类“RolesEntity”应具有[public,protected]无arg构造函数 无法解析表“user_roles” 但是当我在IntelliJ IDEA2019.3.3(社区版)这样的旧版本中打开我的项目时,我就看不出这个问题了。 Int

  • 问题内容: 我想使用jQuery / Java脚本搜索并突出显示文本。 示例HTML 1: 当我搜索字符串“ Good Morning”时,div1和div3中的内容都应突出显示。即。输出html应该是 我使用了插件https://raw.github.com/bartaz/sandbox.js/master/jquery.highlight.js将搜索到的内容包含在span中。但是只有div3高