JXMapKit OpenStreetMaps создает маршруты

#java #netbeans #routing #openstreetmap

#java #netbeans #маршруты #openstreetmap

Вопрос:

Я использую JXMapKit с OpenStreetMap в качестве поставщика и пытаюсь найти способ отображения маршрутов на карте. Затем используются маршруты, чтобы транспортные средства могли следовать по ним. Есть ли какой-либо способ сделать это или есть какие-либо альтернативы?

Заранее спасибо.

Ответ №1:

Да, вы можете. Взято по этой ссылке: http://www.naxos-software.com/blog/index.php?/archives/92-TracknMash-Openstreetmap-Karten-in-JavaSwing-mit-JXMapViewer.html

Вы пишете свой собственный класс Painter и переопределяете метод paint для рисования линий:

 public void paint... {
g = (Graphics2D) g.create();
    // convert from viewport to world bitmap
    Rectangle rect = object.getViewportBounds();
    g.translate(-rect.x, -rect.y);

    //set the line properties
    g.setColor(Color.RED);
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g.setStroke(new BasicStroke(2));

    // do the drawing
    int lastX = -1;
    int lastY = -1;
    for (GeoPosition point : points) {
        Point2D pt = object.getTileFactory().geoToPixel(point, object.getZoom());
        if (lastX != -1 amp;amp; lastY != -1) {
            g.drawLine(lastX, lastY, (int) pt.getX(), (int) pt.getY());
        }
        lastX = (int) pt.getX();
        lastY = (int) pt.getY();
    }
}
  

Где points — это ваш список объектов геопозиции, которые формируют ваш маршрут.

Затем вы добавляете этот художник в свой MapKit в качестве OverlayPainter:

 myMapKit.getMainMap().setOverlayPainter(new MyPainter(myMockPoints));