作者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