//网站根目录 var __ID_HOME__="#zj_home"; //生产环境设置为true,本地设置为false var __JS_DEBUG__= true; var __JS_APP__ = ""; var __JS_APP_HOME__ = "/"; var __JS_PUBLIC__ = "/Public"; var __JS_HOME__ = "/Template/default/Home/Public"; var _URL_SIGN = "https://zhangjunbk.com:443/sign"; var _URL_LOGIN = "https://zhangjunbk.com:443/login"; var _URL_REG = "https://zhangjunbk.com:443/reg"; var _URL_FORGET = "https://zhangjunbk.com:443/forget"; var _URL_SEND_EMAIL = "https://zhangjunbk.com:443/sendEmail"; var _URL_SEND_MOBILE = "https://zhangjunbk.com:443/sendMobile"; var _URL_RELATION_EMAIL = "https://zhangjunbk.com:443/relationEmail"; var _URL_SIGN_RELATION_EMAIL = "https://zhangjunbk.com:443/sign_relation"; var _URL_FRONT_LOGOUT="/frontlogout"; var _URL_CHECK_LOGIN = "https://zhangjunbk.com:443/check_login"; var _URL_PAY_POINTS = "https://zhangjunbk.com:443/payPoints"; var _URL_PAY_POINTS_VIDEO = "https://zhangjunbk.com:443/payPointsVideo"; var _URL_USER_POINTS = "https://zhangjunbk.com:443/uindex"; var _URL_AJAX_STOCK_SEALING = "https://zhangjunbk.com:443/ajaxStockSealing"; var _URL_API_WX_CREATE = "https://zhangjunbk.com:443/wxV2Create"; var _URL_API_WX_CREATE_NATIVE_REWARD = "https://zhangjunbk.com:443/wxV2CreateNative_reward"; var _URL_CENTER_USER = "https://zhangjunbk.com:443/centerUser"; var _URL_QQ = "{https://www.zhangjunbk.com/oauth/callback/}";

百度地图SDK for Android【Demo自定义图层】

系统 1728 0

今天将和大家分享的是如何构建自定义图层并显示自定义的覆盖物。

首先,我们要构建一个最基本的地图应用,具体介绍请参考: 百度地图SDK for Android【Demo地图展示】

在此基础之上,我们对工程文件做一定的修改。

第一步,修改布局文件,添加button控件,用于控制添加自定义覆盖物。代码如下:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <!-- 放入百度地图的mapview -->
    <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:clickable="true"/>

    <!-- 添加按钮 -->
    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="《添加自定义覆盖物》" />

</RelativeLayout>
  

第二步,定义继承自ItemizedOverlay<OverlayItem>的自定义图层。代码如下:

    public class MyOverLay extends ItemizedOverlay<OverlayItem> {

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

	private double mLat1 = 39.90923;//39.9022; // point1纬度
	private double mLon1 = 116.397428;//116.3822; // point1经度

	private double mLat2 = 39.9022;
	private double mLon2 = 116.3922;

	private double mLat3 = 39.917723;
	private double mLon3 = 116.3722;

	public MyOverLay(Drawable marker, Context context){
		super(marker);
		this.mContext= context;
		// 用给定的经纬度构造GeoPoint,单位是微度 (度 * 1E6)
		GeoPoint p1 = new GeoPoint((int)(mLat1 * 1E6), (int)(mLon1 * 1E6));
		GeoPoint p2 = new GeoPoint((int)(mLat2 * 1E6), (int)(mLon2 * 1E6));
		GeoPoint p3 = new GeoPoint((int)(mLat3 * 1E6), (int)(mLon3 * 1E6));

		GeoList.add(new OverlayItem(p1, "P1", "point1"));
		GeoList.add(new OverlayItem(p2, "P2", "point2"));
		GeoList.add(new OverlayItem(p3, "P3", "point3"));		
		populate();//createItem(int)方法构造item。一旦有了数据,在调用其它方法前,首先调用这个方法
	}

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

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

	@Override
	// 处理当点击事件
	protected boolean onTap(int i){
		Toast.makeText(this.mContext, GeoList.get(i).getSnippet(), Toast.LENGTH_SHORT).show();
		return true;
	}

}
  

第三步,在主类中定义并初始化button控件,设置相应的点击事件。代码如下:

    		// 初始化button并设置点击操作事件
		button = (Button) findViewById(R.id.button1);
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Drawable marker =getResources().getDrawable(R.drawable.ic_launcher);
				mapView.getOverlays().add(new MyOverLay(marker, MainActivity.this));
				mapView.refresh(); 
			}
		});
  

第四步,运行,显示结果如下:

百度地图SDK for Android【Demo自定义图层】

点击下载原工程文件。



更多详细信息请登录百度地图API官方网站: http://developer.baidu.com/map/
百度地图API论坛: http://bbs.lbsyun.baidu.com/

百度地图SDK for Android【Demo自定义图层】


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论