今天将和大家分享的是如何构建自定义图层并显示自定义的覆盖物。
首先,我们要构建一个最基本的地图应用,具体介绍请参考:百度地图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();
}
});
第四步,运行,显示结果如下:
点击下载原工程文件。
更多详细信息请登录百度地图API官方网站:http://developer.baidu.com/map/
百度地图API论坛:http://bbs.lbsyun.baidu.com/
分享到:
相关推荐
基于最新百度地图SDK开发的Demo, 其中包括: 1、基本地图 2、定位 3、测量两点间的距离 4、公交查询
android studio集成百度地图SDK显示地图
该资源是导入了百度地图SDK的Android项目,可正常的使用,作后续的开发
可以直接运行在真机中测试可运行百度地图SDK DEMO. 附带相关的ak key。
最新版百度地图sdkdemo,需要重新申请ak。
这里接入了百度地图2019最新SDK,里面的功能包含了地图的显示,个人GPS定位,还有地图的标记。可以在这个demo上继续添加新的功能。比如,POI检索等等。
百度地图sdk的集成demo
根据百度官方文档:http://lbsyun.baidu.com/index.php?title=首页学习所写的百度地图SDK Demo
android百度地图sdk的api使用官方demo代码,包含eclipse的demo和android studio的demo和骑行地图的studio代码共三份,里面的东西都很细,每个类型的api,demo里面都分门别类的列了出来。...
百度地图sdk包,版本5.2.1 5_2_1
Android 百度地图最新SDK v3.2.0和Android定位SDK:v5.0应用,博客中有详细介绍
百度地图 iOS SDK是一套基于iOS4.3及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索、路径规划、地图标注、离线地图、定位等丰富的LBS能力。
Android 百度地图 baidumap 5.0SDK 本地定位demo 简单的一个实现,给还纠结于此的同学做一个参考
ArcGIS 开发 SDK for Android
ArcGIS Runtime SDK for Android v1.1发布啦,增强和改进如下: API: 1、从ArcGIS.com上搜索和使用content、users和groups; 2、支持要素定义存储在本地设备上的要素的高级符号化渲染; 3、支持单个应用程序中多个...
ArcGIS Runtime SDK for Android开发介绍,来自Esri 中国技术人员的培训材料。
百度地图公共sdk示例源码,小DEMO,还包含自定义Dialog的使用,还有几个公共sdk没做完,日后完善吧,****替换为自己的key
android版百度地图自定义Marker
百度官方地图sdk开发demo,里面有详细代码,以及实现的功能点
Android 百度地图 最新SDK v3.4.0 基础地图加标记点图层和信息图层