Java Android ItemizeOverlay缩放画布

Java Android ItemizeOverlay缩放画布,java,android,android-canvas,google-maps-mobile,Java,Android,Android Canvas,Google Maps Mobile,我正在尝试缩放Android map ItemizeOverlay中的图片, 我让它工作到可以看到10张图片的程度,我有ZoomControl,但实际上没有其他功能 这是扩展ItemizeOverlay的MapItems类,欢迎进行优化 import java.util.ArrayList; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.Log; imp

我正在尝试缩放Android map ItemizeOverlay中的图片, 我让它工作到可以看到10张图片的程度,我有ZoomControl,但实际上没有其他功能

这是扩展ItemizeOverlay的MapItems类,欢迎进行优化

import java.util.ArrayList;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;

public class MapItems extends ItemizedOverlay 
{

    private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
    Context mContext;

    public MapItems(Drawable defaultMarker) 
    {
        super(boundCenterBottom(defaultMarker));
    }

    @Override
    public void draw(android.graphics.Canvas canvas,MapView mapView,boolean shadow) 
    {
        /*
        Log.d("MapAc", String.valueOf(mapView.getZoomLevel()));
        if(mapView.getZoomLevel() > 20)
        {
            Log.d("MapAc", "scaling up");
            canvas.scale(1.2f, 1.2f);
        }

        */

        super.draw(canvas,mapView,false);
    }


    public MapItems(Context context) 
    {
        super(boundCenterBottom(context.getResources().getDrawable(R.drawable.app_icon_clean))); 
        mContext = context;
    }

    public void addOverlay(OverlayItem overlay) 
    {
        mOverlays.add(overlay);
        populate();
    }

    public void clearOverlay()
    {
        mOverlays.clear();
    }

    @Override
    protected OverlayItem createItem(int i) 
    {
        return mOverlays.get(i);
    }

    @Override
    public int size() 
    {
        return mOverlays.size();
    }

     @Override
     protected boolean onTap(int index) 
     {
         /* ToDo
       OverlayItem item = mOverlays.get(index);
       AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
       dialog.setTitle(item.getTitle());
       dialog.setMessage(item.getSnippet());
       dialog.show();
        */
       return true;
    }

}
import java.util.ArrayList;
导入android.content.Context;
导入android.graphics.drawable.drawable;
导入android.util.Log;
导入com.google.android.maps.ItemizedOverlay;
导入com.google.android.maps.MapView;
导入com.google.android.maps.OverlayItem;
公共类MapItems扩展了ItemizeOverlay
{
private ArrayList mOverlays=new ArrayList();
语境;
公共地图项(可绘制的默认标记)
{
super(boundCenterBottom(defaultMarker));
}
@凌驾
公共空白绘制(android.graphics.Canvas画布、MapView MapView、布尔阴影)
{
/*
Log.d(“MapAc”,String.valueOf(mapView.getZoomLevel());
如果(mapView.getZoomLevel()>20)
{
Log.d(“MapAc”,“放大”);
画布比例(1.2f,1.2f);
}
*/
super.draw(画布、地图视图、假);
}
公共映射项(上下文)
{
super(boundCenterBottom(context.getResources().getDrawable(R.drawable.app_icon_clean));
mContext=上下文;
}
公共void addOverlay(OverlayItem overlay)
{
添加(覆盖);
填充();
}
公共无效clearOverlay()
{
mOverlays.clear();
}
@凌驾
受保护的OverlayItem createItem(int i)
{
返回mOverlays.get(i);
}
@凌驾
公共整数大小()
{
返回mOverlays.size();
}
@凌驾
受保护的布尔onTap(整数索引)
{
/*待办事项
OverlayItem item=mOverlays.get(索引);
AlertDialog.Builder dialog=新建AlertDialog.Builder(mContext);
setTitle(item.getTitle());
setMessage(item.getSnippet());
dialog.show();
*/
返回true;
}
}
我一直在尝试使用canvas.scale在draw方法中进行缩放,但是这似乎是在另一个位置重新绘制画布,以及“原始大小”的旧画布,
我不确定我是从正确的角度来处理这个问题,还是仅仅是清理屏幕的问题,我已经用了几天的时间来解决这个问题,因此非常欣赏在缩放时正确缩放图片的方法,

使用新的地图API V2


您正在使用新的地图API吗?不,旧的,甚至没有注意到有一个:S,我应该重新考虑转换吗?多少是可重复使用的?这是你的第一个错误。使用新的。他们在新的东西中真的简化了很多。很好,我会注意的,如果没有人提供解决方案,我想你应该发布一个答案这是一个正确的有效解决方案,但是对于未来的读者来说,这并不像你想象的那么容易,我现在正在努力使它在eclipse中工作,没有太多的教程,yetLearning不推荐的东西也不是办法。额外提示。。。如果你安装了旧版本的eclipse,这当然会给你带来麻烦,请用eclipse安装android sdk,我用我的旧设置得到了各种奇怪的结果