首页>代码>android 百度地图Demo>/BaiduMapApiDemo/src/com/baidu/mapapi/demo/CloudOverlay.java
package com.baidu.mapapi.demo;

import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.DisplayMetrics;
import android.widget.Toast;

import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.ItemizedOverlay;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.OverlayItem;
import com.baidu.mapapi.cloud.CustomPoiInfo;

public class CloudOverlay extends ItemizedOverlay<OverlayItem> {

    List<CustomPoiInfo> mLbsPoints;
    Activity mContext;
    private int mDpi = 0; //0:low; 1:mid; 2:high
    
    public CloudOverlay(Activity context) {
        super(null);
        mContext = context;
        
        DisplayMetrics dm = new DisplayMetrics();
        context.getWindowManager().getDefaultDisplay().getMetrics(dm); 
        if (dm.densityDpi <= 120) {
            mDpi = 0;
        } else if (dm.densityDpi <= 180) {
            mDpi = 1;
        } else {
            mDpi = 2;
        }
    }

    public void setData(List<CustomPoiInfo> lbsPoints) {
        if (lbsPoints != null) {
            mLbsPoints = lbsPoints;
            super.populate();
        }
    }
    
    @Override
    protected OverlayItem createItem(int i) {
        char[] pos = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
        char[] dpi = {'l', 'm', 'h'};
        CustomPoiInfo rec = mLbsPoints.get(i);
        GeoPoint pt = new GeoPoint((int)(rec.latitude * 1e6), (int)(rec.longitude * 1e6));
        OverlayItem item = new OverlayItem(pt , rec.name, rec.address);
        Drawable marker = null;
        if (i < 10) {
            StringBuilder sb = new StringBuilder(32);
            sb.append("icon_mark").append(pos[i]).append('_').append(dpi[mDpi]).append(".png");
            marker = getDrawable(mContext, sb.toString());
        }
        item.setMarker(boundCenterBottom(marker));
        return item;
    }
    
    @Override
    public int size() {
        if (mLbsPoints != null)
            return mLbsPoints.size();
        else
            return 0;
    }
    
    @Override
    protected Object clone() throws CloneNotSupportedException {
        // TODO Auto-generated method stub
        return super.clone();
    }
    
    @Override
    public void draw(Canvas arg0, MapView arg1, boolean arg2) {
        // TODO Auto-generated method stub
        super.draw(arg0, arg1, arg2);
    }
    
    @Override
    public boolean draw(Canvas arg0, MapView arg1, boolean arg2, long arg3) {
        // TODO Auto-generated method stub
        return super.draw(arg0, arg1, arg2, arg3);
    }
    
    @Override
    protected boolean onTap(int arg0) {
        CustomPoiInfo item = mLbsPoints.get(arg0);
        Toast.makeText(mContext, item.name,Toast.LENGTH_LONG).show();
        return super.onTap(arg0);
    }
    
    private static final int sdkVersion = Integer.parseInt(Build.VERSION.SDK);
    private static Constructor<?> mConstructorBitmapDrawable = null;
    static Drawable getDrawable(Context context, String name) {
        try {
            AssetManager am = context.getAssets();
            InputStream is = am.open(name);
            Bitmap bm = BitmapFactory.decodeStream(is);
            is.close();
            if (sdkVersion < 4) {
                Drawable drawable = new BitmapDrawable(bm);
                return drawable;
            } else {
                Resources rs = context.getResources();
                if (mConstructorBitmapDrawable == null) {
                    Class<?> drawableClass = Class.forName("android.graphics.drawable.BitmapDrawable");
                    mConstructorBitmapDrawable = drawableClass.getConstructor(new Class[]{Resources.class, Bitmap.class});
                }
                Object obj = mConstructorBitmapDrawable.newInstance(new Object[]{rs, bm});
                return (Drawable)obj;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}
最近下载更多
tianshi  LV7 2023年10月19日
我喔沃窝握卧  LV1 2022年11月26日
唐家俊  LV2 2022年6月8日
ysy121788  LV1 2021年9月17日
Little already  LV3 2021年6月22日
Xpyxpy  LV2 2021年5月21日
863355189  LV5 2021年5月13日
kkxfmmb 2021年4月2日
暂无贡献等级
a1017514773  LV6 2021年2月6日
木木沐  LV7 2020年11月19日
最近浏览更多
wjs-zuizui 10月19日
暂无贡献等级
shis_y  LV1 8月23日
2636804923  LV6 6月20日
亦是此间少年  LV3 3月7日
tianshi  LV7 2023年10月19日
wfydwang 2023年9月18日
暂无贡献等级
Yanguu 2023年7月11日
暂无贡献等级
倾城之恋1  LV5 2023年5月21日
dsj52081 2023年5月19日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友