`

android 在Google地图上添加标记

 
阅读更多

摘自mars chen 老师的视频第三季 07季

首先我们要明白Overlay的作用:

 1.一个overlay对象表示显示在MapView之上的图层 2 在一个overlay对象中可以包含多个地图标记

详情见:http://code.google.com/android/add-ons/google-apis/reference/index.html

 

其次:要明白ItemizedOverlay的作用:

        1.它是overlay的子类 2在该类当中拥有一个或多个OverlayItem 3每个OverlayItem 代表一个标记

详见:http://code.google.com/android/add-ons/google-apis/reference/index.html

 

在地图中使用标记的步骤:

       1.在MapView上创建一个单独的图层

       2 创建标记对象

       3 将标记显示在指定图层的指定位置

       4.处理点击标记事件

 

代码解析:

1.创建类,实现overlay即public class FirstOverlay extends ItemizedOverlay<OverlayItem>{}

2.创建一个list,用于持有该图层当中所有的标记对象

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

3 创建OverlayItem标记对象 

      

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

 4 将生成OverlayItem对象添加到list中

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

 5 override the size() method to return the current number of items in the ArrayList

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

 6 添加构造方法

//defaultMarker 指定标记所使用的默认图片
	public FirstOverlay(Drawable defaultMarker, Context context) {
		//必须调用父类的构造函数
		super(boundCenterBottom(defaultMarker));
		mContext = context;
	}

 7 当用户点击时执行(override the onTap(int) callback method, which will handle the event when an item is tapped by the user)

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

 之后在MainActivity extends MapAcitivity中调用FirstOverlay 来使用标记

 

8 在onCreate() 中添加如下代码:前提是(res/drawable下添加一个小图片命名为androidmarker.png或androidmarker.jpg

 

 //mapView.getOverlays()用于得到所有图层对象
		List<Overlay> mapOverlays = mapView.getOverlays();
		
		Drawable drawable = this.getResources().getDrawable(R.drawable.androidmarker);
		
		FirstOverlay firstOverlay = new FirstOverlay(drawable,this);

 
 9 接着添加

//GeoPoint用于通过经纬度指定地图上的一个点
		GeoPoint point = new GeoPoint(19240000, -99120000);
		
		OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!","I'm in Mexico City!");

 

10 添加

firstOverlay.addOverlay(overlayitem);
		
		mapOverlays.add(firstOverlay);

 

所对应得main.xml文件为

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<com.google.android.maps.MapView
    android:id="@+id/mapview"
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"
                 android:clickable="true"
                 android:apiKey="*****"
                 />
</RelativeLayout>

 之后就运行你的项目吧 嘿嘿 效果如下:



 当点击图片时,显示



 最最原始的代码请见:http://developer.android.com/resources/tutorials/views/hello-mapview.html

Part 2: Adding Overlay Items

 

 

  • 大小: 34.7 KB
  • 大小: 51.1 KB
分享到:
评论
1 楼 hao123xue456 2011-11-16  
不错,现在正需要呢

相关推荐

Global site tag (gtag.js) - Google Analytics