作者MiaShopgirl ( )
看板AndroidDev
標題[問題] 自製地圖+錨點縮放
時間Fri Mar 2 16:06:47 2012
想要做類似google map那樣的縮放,畫面上有許多錨點
隨著zoom in, zoom out的同時放大縮小錨點的icon
參考
#1ECMxsU5應該可以套用到自製地圖上
自製圖片縮放的方式,猜想可以用imageView+ZoomControls
先設定好地圖座標範圍後,放上地圖,再讓使用者長按加入錨點
但是因為畫面的縮放後,不能取螢幕的座標為基準
得要參照縮放後的位置... 這點就讓人很頭大...
不知道版上先進有何想法@@?
打完這篇,想不到任何的關鍵字...<囧>
※ 編輯: MiaShopgirl 來自: 60.250.26.190 (03/02 16:25)
1F:推 LaPass:就... 自己取螢幕基準點,然後換算成畫面座標點... 03/02 17:04
剛剛跟同事討論,好像也是這樣..
不過螢幕左上角的位置,也要算進去才能拿到正確的座標吧....@_@
但是經過縮放跟拖曳...要一直監聽手指的位置去計算螢幕左上角的點嘛!__!
├───────── 1000 ─────────┤
┬┌──────────────────────┐ 地圖座標
││(x,y) │
││ │ 1000 fingerX
││
← 圖 片 原 始 大 小 →│ ── = ──
││ │ 480 180
││ ├──── 480 ────┤ │
││ ┬┌────┬──────┐ │
││ ││ │ │ │
││ ││ │ │ │ 3000 fingerY
││ ││ │ │ │ ── = ──
││ ││ │ │ │ 800 200
3 │ 8 │ │ │ │
0 │ 0 ├────┼ │ │
0 │ 0 │ (fingerX,fingerY) │ │
0 │ ││ │ │
││ ││ │ │
││ ││
← 手 機 螢 幕 →│ │
││ ││ │ │
==========================下略==========================
※ 編輯: MiaShopgirl 來自: 60.250.26.190 (03/02 17:42)
2F:→ tericky:有點看不懂你要做什麼 @@a 你的意思是說 你要讓圖片的位置 03/02 22:22
3F:→ tericky:是由使用者自己標記上去的嗎? 03/02 22:23
對@@, 就是 讓使用者自由選擇他喜歡的點 讓他標記這樣
※ 編輯: MiaShopgirl 來自: 119.77.134.167 (03/03 12:54)
4F:→ tericky:不知道你有沒有做出來了 如果沒有我下班回家再做個範例 03/03 16:06
這樣很不好意思啊 囧rz t大有空的話可否提個點?
猜想硬著頭下去實做兩點縮放功能後應該就稍微懂了吧
雖然這一切都只是幻想 <囧>
真的寫不出來的話再麻煩您上陣就是(炸
※ 編輯: MiaShopgirl 來自: 119.77.134.167 (03/03 17:21)
5F:→ tericky:我好像誤會你的意思了 @@a 我再想想要怎麼做 03/04 01:38
目前參考Hello, Android, 3rd Edition的範例,單隻:
http://goo.gl/P0yld
完整範例:
http://media.pragprog.com/titles/eband3/code/eband3-code.zip
用ImageView.setOnTouchListener,拿的到手指座標(fingerX,fingerY)
但是很囧的事情是...我拿不到ImageView的座標(x,y)..(炸
layout的xml簡略為
<FrameLayout....>
<ImageView
android:id="@+id/imageWall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="backGround"
android:scaleType="matrix"
android:src="@drawable/sky" />
</FrameLayout>
public class FreeMapActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
//設定layout, wallView.setOnTouchListener(onTouchLis);
}
private OnTouchListener onTouchLis = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent rawEvent) {
Log.d(TAG, "getLeft:" + wallView.getDrawable().getBounds().left);
Log.d(TAG, "getTop:" + wallView.getDrawable().getBounds().top);
//計算手指位置&判定拖曳/縮放
}
怎麼拿都是0,該不會不能用imageView拿座標吧 〒△〒
※ 編輯: MiaShopgirl 來自: 60.250.26.190 (03/07 12:32)
6F:→ MiaShopgirl:來加個wallPosition(0.0),每次手指移動都update好了 03/07 14:55