2016-07-08 2 views
1

Так что я новичок в JMapViewer (и StackOverFlow). В настоящее время я пытаюсь разработать графическое представление сети в реальном времени, где фон - это карта области. Пока все идет хорошо, но одна проблема вызывает меня. Когда я создаю MapMarkerCircle и задаю имя, я хочу создать новую строку, чтобы отобразить информацию под ней.Новая линия в MapMarkerCircle, JMapViewer

Я пробовал "\n", но это не сработает. Я попытался включить его в html-формат и использовать <br>, чтобы разбить строку, но опять же, он просто печатает всю вещь, как если бы это была строка.

Если кто-то столкнулся с этим вопросом раньше, я был бы очень признателен за любую помощь.

Вот небольшая часть кода, в котором возникает проблема. Обратите внимание, что «RateCircle» расширяет «MapMarkerCircle».

Coordinate dataPoint= new Coordinate((pmpLinks[i].getRecieverSite().getLat()+pmpLinks[i].getTransmitter().getLat())/2, (pmpLinks[i].getRecieverSite().getLon()+pmpLinks[i].getTransmitter().getLon())/2);     
String rateStringName="<html>"+inRateAsString+"<br>kb/s</html>"; 

pmpCanopyRatePoints[i]=new RateCircle(allPMPrateLayer[i],rateStringName, dataPoint);      
map().addMapMarker(pmpCanopyRatePoints[i]); 

ответ

0

Вы можете использовать System.lineSeparator():

String rateStringName = inRateAsString + System.lineSeparator() + "kb/s"; 
+1

I'v пытался что сейчас, но все еще кажется, сделать то же самое, только печатает его на той же строке – swilson1995

1

MapMarkerCircle::paint звонки MapMarkerCircle::paintText, который называет Graphics::drawString, что не соответствовало бы особого значения для контроля символов или разметки. Начиная с этого example, реализация paintText() ниже рисует вторую строку под первой.

Я обновил пример, чтобы предложить способ связать имя и значение маркера. Он использует Map<String, Integer>, передавая Map.Entry<String, Integer> в качестве параметра в конструктор RateCircle.

image

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.Graphics; 
import java.awt.Point; 
import java.util.HashMap; 
import java.util.Map; 
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.Style; 

/** 
* @see https://stackoverflow.com/a/38265252/230513 
* @see https://stackoverflow.com/a/33857113/230513 
*/ 
public class RateCircleTest { 

    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); 
     Map<String, Integer> rates = new HashMap<>(); 
     rates.put("London", 42); 
     for (Map.Entry<String, Integer> entry : rates.entrySet()) { 
      map.addMapMarker(new RateCircle(entry, london)); 
     } 
     f.add(map); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 

    private static class RateCircle extends MapMarkerCircle { 

     private static final int R = 12; 
     private Map.Entry<String, Integer> entry; 

     public RateCircle(Map.Entry<String, Integer> entry, Coordinate coord) { 
      super(null, "", coord, R, STYLE.FIXED, getDefaultStyle()); 
      this.entry = entry; 
      Style style = getStyle(); 
      style.setBackColor(Color.cyan); 
      style.setColor(Color.red); 
     } 

     @Override 
     public void paintText(Graphics g, Point position) { 
      super.paintText(g, position); 
      g.drawString(entry.getKey(), position.x + R + 2, position.y + R); 
      g.drawString(entry.getValue() + " kb/s", position.x + R + 2, 
       position.y + R + g.getFontMetrics().getHeight()); 
     } 
    } 

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

Спасибо, я передам это идти, и пусть вы знаете, как я продолжаю! – swilson1995