Discussion:
[問題] urmap,googleMaps地圖的平移和縮放要怎 …
(时间太久无法回复)
._.
2007-05-08 18:17:09 UTC
Permalink
※ 引述《eliang ()》之銘言:
: 相信各位應該都有用過 urmap, GoogleMaps, 或 papago 吧?
: 它們都可以用滑鼠來平移 (pan) 和縮放 (zoom) 地圖,
: 現在我想用 java swing 寫出一個類似功能的東西,
: 平移對我來說沒問題,
: 但我寫出來的縮放, 並不是以畫面的中心做縮放,

我猜 (因為 Java2D 很久沒摸了)

你 g2d 只有"那條線跟那個圓", 而不是"整個畫面"
因此你直接對 g2d scale 的結果就是以那個"線圓"的群組為中心去縮放.

所以你可以在 zoom 之前偷偷把 g2d 搬個位置,
造成像是以畫面中心來縮放的假象.

當然也有別的做法啦.

我只是覺得如果只有一個 g2d.
這樣改起來可能比較快而已.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.149.2
e***@ptt.cc
2007-05-09 14:35:49 UTC
Permalink
※ 引述《ogamenewbie (._.)》之銘言:
: ※ 引述《eliang ()》之銘言:
: : 相信各位應該都有用過 urmap, GoogleMaps, 或 papago 吧?
: : 它們都可以用滑鼠來平移 (pan) 和縮放 (zoom) 地圖,
: : 現在我想用 java swing 寫出一個類似功能的東西,
: : 平移對我來說沒問題,
: : 但我寫出來的縮放, 並不是以畫面的中心做縮放,
: 我猜 (因為 Java2D 很久沒摸了)
: 你 g2d 只有"那條線跟那個圓", 而不是"整個畫面"
: 因此你直接對 g2d scale 的結果就是以那個"線圓"的群組為中心去縮放.
: 所以你可以在 zoom 之前偷偷把 g2d 搬個位置,
: 造成像是以畫面中心來縮放的假象.

謝謝你的回應, 的確如你所說,

這個方法是可以製造出以畫面中心縮放的假象,

但卻因為多平移了一次, 造成最終平移結果錯誤,

我想問題應該是出在平移和縮放是寫在一起的,

所以想問問看有沒有什麼方法可以把平移和縮放區隔開來?

: 當然也有別的做法啦.
: 我只是覺得如果只有一個 g2d.
: 這樣改起來可能比較快而已.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.133.199
小安
2007-05-09 15:09:45 UTC
Permalink
※ 引述《eliang ()》之銘言:
: 謝謝你的回應, 的確如你所說,
: 這個方法是可以製造出以畫面中心縮放的假象,
: 但卻因為多平移了一次, 造成最終平移結果錯誤,
: 我想問題應該是出在平移和縮放是寫在一起的,
: 所以想問問看有沒有什麼方法可以把平移和縮放區隔開來?

要以中間來縮放,
其實只要把 panX, panY 當作是畫面的中心就好

所以只要前面多一個平移
g2d.translate(width/2, height/2);
即可

然後原先的 translate 跟 scale 順序錯了
g2d.scale(zoomX, -zoomY);
g2d.translate(panX, panY);
g2d 我也不熟,所以我也不知道要怎麼說明 ~_~

這樣子在縮放時應該就沒問題了,
不過在已經縮放過之後在做平移就會出現問題

(啊~~我真的不知道該怎麼解釋啊...囧)

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.80.193
ephesians
2007-05-11 12:10:27 UTC
Permalink
※ 引述《eliang ()》之銘言:
: 相信各位應該都有用過 urmap, GoogleMaps, 或 papago 吧?
: 它們都可以用滑鼠來平移 (pan) 和縮放 (zoom) 地圖,
: 現在我想用 java swing 寫出一個類似功能的東西,
: 平移對我來說沒問題,
: 但我寫出來的縮放, 並不是以畫面的中心做縮放,
: 就像這樣: http://www.cs.nccu.edu.tw/~s9204/java/CanvasTest.htm
: (上面網址是 Java Applet, 需裝 JRE 5.0+ 才能執行)
: (進入上面網址, 可看到左上角有個小圓, 請先用滑鼠左鍵把它
: 拖下來, 再做測試)

這個要怎麼看呢? 在 JRE 1.5.0_08-b03 開上述網頁,
沒看見什麼圓耶...
用Java 6.0也看不見.


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.137.2.45

继续阅读narkive:
Loading...