当前位置: 代码迷 >> Android >> android 在Google舆图上添加标记
  详细解决方案

android 在Google舆图上添加标记

热度:21   发布时间:2016-05-01 19:36:25.0
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

?

?

1 楼 hao123xue456 2011-11-16  
不错,现在正需要呢
  相关解决方案