android 做一个新的覆盖物(Overlay)

获取权限

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.lichen" android:versionCode="1" android:versionName="1.0">  
  4.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  5.         <activity android:name=".MapTest" android:label="@string/app_name">  
  6.             <intent-filter>  
  7.                 <action android:name="android.intent.action.MAIN" />  
  8.                 <category android:name="android.intent.category.LAUNCHER" />  
  9.             </intent-filter>  
  10.         </activity>  
  11.   
  12.     </application>  
  13.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  
  14.     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>  
  15.     <uses-permission android:name="android.permission.INTERNET"></uses-permission>  
  16.     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  
  17.     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  
  18.     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  
  19.     <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>  
  20.     <supports-screens android:largeScreens="true"  
  21.         android:normalScreens="true" android:smallScreens="true"  
  22.         android:resizeable="true" android:anyDensity="true" />  
  23.     <uses-sdk android:minSdkVersion="3"></uses-sdk>  
  24. </manifest>   

添加一个clicktab

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical" android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent">  
  5.     <TextView android:layout_width="fill_parent"  
  6.         android:layout_height="wrap_content" android:text="@string/hello" />  
  7.     <com.baidu.mapapi.MapView android:id="@+id/bmapsView"  
  8.         android:layout_width="fill_parent" android:layout_height="fill_parent"  
  9.         android:clickable="true" />  
  10. </LinearLayout>  

其实每一层Overlay都是一个透明的玻璃纸,覆盖在lay上面


为了添加一个新的标签,我生成了一个新的Overlay类,实现了借口,同时把这个Overlay添加

到MapView当中就显示出来了。

java

package com.lichen;

import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.location.Location;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.ItemizedOverlay;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MKLocationManager;
import com.baidu.mapapi.MKPlanNode;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.MyLocationOverlay;
import com.baidu.mapapi.Overlay;
import com.baidu.mapapi.OverlayItem;
import com.baidu.mapapi.PoiOverlay;
import com.baidu.mapapi.RouteOverlay;
import com.baidu.mapapi.TransitOverlay;

public class MapTest extends MapActivity {
	private BMapManager mBMapMan = null;
	private MapView mMapView=null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		mBMapMan = new BMapManager(getApplication());
		mBMapMan.init("2D09537974A31862F4E18E03490C952B83B2E8A0", null);
		super.initMapActivity(mBMapMan);
		
		mMapView = (MapView) findViewById(R.id.bmapsView);
		
		//添加一层覆盖物
		mMapView.getOverlays().add(new MyOverlay());
		mMapView.setBuiltInZoomControls(true); // 设置启用内置的缩放控件 
		MapController mMapController = mMapView.getController(); // 得到mMapView的控制权,可以用它控制和驱动平移和缩放
		GeoPoint point = new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6)); //用给定的经纬度构造一个GeoPoint,单位是微度(度 * 1E6)
		mMapController.setCenter(point); //设置地图中心点
		mMapController.setZoom(12); //设置地图zoom级别
	}

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}

	@Override 
	protected void onDestroy() {
		if (mBMapMan != null) {
			mBMapMan.destroy();
			mBMapMan = null;
		}
		super.onDestroy();
	}

	@Override 
	protected void onPause() {
		if (mBMapMan != null) {
			mBMapMan.stop();
		}
		super.onPause();
	}

	@Override 
	protected void onResume() {
		if (mBMapMan != null) {
			mBMapMan.start();
		}
		super.onResume();
	}
	
	
	//添加一层覆盖物
	public class MyOverlay extends Overlay {
	    GeoPoint geoPoint = new GeoPoint((int) (39.915 * 1E6), (int) (116.404 * 1E6));
	    Paint paint = new Paint();
	 
	    @Override
	    public void draw(Canvas canvas, MapView mapView, boolean shadow) {
	        //在天安门的位置绘制一个String
	        Point point = mMapView.getProjection().toPixels(geoPoint, null);
	        canvas.drawText("★这里是天安门", point.x, point.y, paint);
	    }
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值