我试图使用JXMapViewer融入我的Swing应用程序。
我画双向点之间的地图上线。 现在我想实现像一个功能:
不管我在哪里的地图,无论缩放级别设置,每当我点击一个按钮(或某个外部事件)上,重点应转移到我行已制定(即间接地对两个航点)
其次,缩放级别应设置含有这两种路点的映射的,使得部分应该是可见的。
我看到我们有getViewportBounds
内部方法JxMApViewer
类。 同样,我们没有setViewportBounds
。 在这种情况下,我们可以计算出它涵盖这两个航点,并设置一个矩形。
任何暗示将不胜感激
我已经修改现有calculateZoomFrom
方法为:
int zoom = mainMap.getZoom();
Rectangle2D inner = generateBoundedRectangleForLine(positionSet, mainMap.getZoom());
int count = 0;
Rectangle outer = mainMap.getViewportBounds();
while(!outer.contains(inner) || (outer.contains(inner) && !(inner.getHeight() >= mainMap.getHeight() - 50))) {
Point2D center = new Point2D.Double(
inner.getX() + inner.getWidth()/2,
inner.getY() + inner.getHeight()/2);
GeoPosition px = mainMap.getTileFactory().pixelToGeo(center,zoom);
mainMap.setCenterPosition(px);
count++;
if(count > 30) break;
if(outer.contains(inner)) {
if (!(inner.getHeight() >= mainMap.getHeight() - 50)) {
zoom = zoom - 1;
if(zoom < 1) {
break;
}
} else {
break;
}
} else {
zoom = zoom + 1;
if(zoom > 15) {
break;
}
}
mainMap.setZoom(zoom);
inner = generateBoundedRectangleForLine(positionSet, zoom);
}
但它不工作。