2013-06-04 119 views
1

我是Geotools的新手。我正在開發一個顯示地圖的簡單應用程序,並且我想動態地在其上放置一個位圖或矢量符號(例如,顯示當前位置的位置,如導航系統中的位置)。 現在,我已經做的已經是:geotools在覆蓋圖上繪製符號

  • 顯示給定一個或多個shapefile的地圖。
  • 將地圖放在最後插入的位置上。
  • 需要時將圖形添加到新圖層。

我需要做的是在地圖區域定座標來創建圖像的疊加(要清楚,我不想在磁盤上生成一個柵格圖層,我只是想搽屏幕)。 我的猜測是,我不得不以某種方式直接在JMapPane中使用Graphics2D實例,是否正確?在這種情況下,我怎樣才能從繪圖窗格上的地理座標轉換爲像素座標?還是有一些我應該尋找的geotools函數/類?

謝謝。

+0

可以請您展示一些更多的代碼,或者僅僅通過這3行來完成? 我最近有同樣的問題,但更復雜的方式處理它的掠奪。提前致謝 – mdi

回答

3

回答我自己,因爲我找到了解決方案。

我通過擴展類org.geotools.map.DirectLayer,它提供了一種通過擴展其平局(Graphics2D的,MapContent)方法來定義自定義層做到了。通過使用由geotools提供的worldToScreen仿射變換將圖形元素放置在正確的座標處。例如,以限定設置在給定的真實世界的當前位置的的Point2D座標:

AffineTransform worldToScreen = viewport.getWorldToScreen(); 
Point2D worldPoint = new Point2D.Double(currentPosition.x, currentPosition.y); 
Point2D screenPoint = worldToScreen.transform(worldPoint, null); 

一旦draw()方法被定義,只是實例化,並添加作爲層到您MapContent實例。