老规矩,先上图,有图有真相。
这个Demo实现了如下功能:
1.显示地图
2.标注一个或多个poi信息点
3.弹出气泡显示信息点的信息
4.如果你用的是高德地图或者图吧地图的话,只需要把引入包换掉,然后把代码中2个.java文件中的关于引入的googlemap的类换成mapabc的或者图吧的即可用。
5.需要注意的是:高德地图的api需要申请一个apiKey,而图吧的不需要。
6.图吧的api开放程度没有googlemap和mapabc大。
(1)申请apiKey,代码中popmap.xml中的android:apiKey的值需要换成你自己的,否则地图显示不出来
打开Eclipse--->Windows--->Preferences--->Android--->Build
查看默认的debug keystore位置,我的是C:\Documents and Settings\hackang\Local Settings\Application Data\Android\debug.keystore
在cmd中执行
keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\hackang\Local Settings\Application Data\Android\debug.keystore" -storepass android - keypass android
双引号中的为你keystore位置
执行结果:
androiddebugkey, 2009-2-17, keyEntry,
认证指纹 (MD5): XXXXXXXXXXXXXXXXXXXXXXXXXXXX
打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html
填入你的认证指纹(MD5)即可获得apiKey了
layout的xml文件中加入MapView
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX" />
(2)标注一个或多个poi信息点
MyItemizedOverlay overlay = new MyItemizedOverlay(this, drawable); //构造一个标记对象
// 设置显示/隐藏气泡的监听器,因为点击标记的时候会弹出气泡
overlay.setOnFocusChangeListener(onFocusChangeListener);
//构造一个经纬度点,这个是你所要标记的poi点
GeoPoint point = new GeoPoint((int) (39.907 * 1E6),
(int) (116.391 * 1E6));
// 创建标记(北京万达电影城CBD店)
OverlayItem overlayItem = new OverlayItem(point, "北京万达电影城CBD店",
"影院地址:北京市朝阳区大望路万达广场");
// 将标记添加到图层中(可添加多个OverlayItem)
overlay.addOverlay(overlayItem);
如果要标记多个poi点就gou构造多个GeoPoint和OverlayItem对象加到MyItemizedOverlay对象中。
(3)弹出气泡显示信息点的信息
popView = View.inflate(this, R.layout.popview, null);//自定义气泡View对象
mapView = (MapView) findViewById(R.id.map_view); //地图对象
mapView.addView(popView, new MapView.LayoutParams( //把气泡加到地图对象上
MapView.LayoutParams.WRAP_CONTENT,
MapView.LayoutParams.WRAP_CONTENT, null,
MapView.LayoutParams.BOTTOM_CENTER));
当点击标记的时候就给气泡里面的元素设置值。
好了,不多说了,开会去了。
源码下载地址:
http://download.csdn.net/detail/nicholas6lee/4355197