Re: [問題] 如何控制 Google Map 圖層圖示大小
※ 引述《seraphim6 (伏爾加)》之銘言:
: Google Map 中增加的圖示能否一起跟著地圖縮放?
: http://nopaste.info/7035adbb67.html
: 目前只作到貼圖片到Google地圖上面
: 想請教一下
: 想要增加在地圖上面的圖片能夠跟著mapView一起被放大縮小(Zoom in/out)
: 函式庫中有沒有可以作到控制圖片大小的功能?
: 謝謝!
不好意思讓各位等了這麼久,昨天我看到這個問題,感覺我好像有測試過,
有一點小心得,就和大家分享一下,也希望有更好的做法可以提出來!
這個範例適用於同一個圖示的marker,不同位置用不同圖片要等我這禮拜六日有時間
再分享,因為明天要去java 2大會。
因為bbs的排版很難搞,所以在這邊我就講關鍵的部分,想要看比較詳細的內容
可以連到小弟的網誌看:http://tericky.blogspot.com/2011/07/android-mapview.html
首先是圖片層:
重點在於怎麼去變換圖片大小,因為Drawable不允許直接變更圖片或是大小,所以每次
都要重新生成。
所以第一步就是在ItemizedOverlay<OverlayItem>建構時,super規定要傳入
defaultMarker時,先用一個全域變數(mDrawable)把他存起來,供日後使用
接著在protected OverlayItem createItem(int i) {} 中,要寫
OverlayItem.setMarker(mDrawable);讓他每次都去設定圖片。
順便一提,如果setMarker(null),好像是設定回原本defaultMarker的圖案。
接著Override draw(Canvas canvas, MapView mapView, boolean shadow)
在裡面去設定縮放率,並且呼叫ItemizedOverlay去重新載入OverlayItem
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// 計算縮放率,記得一定要 > 0
float scale = 1 - (mBaseLevel - mapView.getZoomLevel()) * mLevelRate;
// 當比例不一樣的時候,再做設定,避免無謂的資源浪費
if (mScale != scale && scale > 0) {
// 計算縮放後的長寬,一定要 >= 1,因為 < 1,轉成int後,就會是0,
// 這樣就會錯誤
float scaleWidth = mOriginalBmp.getWidth() * scale;
float scaleHeight = mOriginalBmp.getHeight() * scale;
Bitmap newbmp = Bitmap.createScaledBitmap(mOriginalBmp, (int) scaleWidth,
(int) scaleHeight, true);
mDrawable = boundCenterBottom(new BitmapDrawable(mContext.getResources(),
newbmp));
// 更新OverlayItem前,先把focus移走,不然會出錯
setLastFocusedIndex(-1);
// 通知ItemizedOverlay更新OverlayItem
populate();
// 儲存新的縮放率
mScale = scale;
}
super.draw(canvas, mapView, shadow);
}
這樣就完成了 ^^b ,程式碼可以到下面這個網址下載,記得要置換mapView的key
http://dl.dropbox.com/u/16142040/AndroidCodeShare/androidTest.rar
--
這篇打了一個多小時
我是覺得每次都要重新製造一個bitmap跟drawable很浪費資源
我昨天有測試直接對draw的canvas去做scale
雖然圖片可以縮放,但是位置也變了 >"<
之後因為iPhone那邊案子比較吃重,我就沒有時間再研究了
有更好的想法歡迎跟我說
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.21.235
※ 編輯: tericky 來自: 122.117.21.235 (07/28 22:20)
推
07/28 22:50, , 1F
07/28 22:50, 1F
推
07/28 22:52, , 2F
07/28 22:52, 2F
推
07/28 22:59, , 3F
07/28 22:59, 3F
→
07/28 23:01, , 4F
07/28 23:01, 4F
推
07/28 23:21, , 5F
07/28 23:21, 5F
推
07/28 23:53, , 6F
07/28 23:53, 6F
→
07/28 23:54, , 7F
07/28 23:54, 7F
→
07/28 23:55, , 8F
07/28 23:55, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章