#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));