1、创建并配置工程
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/eclipse //eclipse配置
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/androidstudio //Android Studio配置
2、在AndroidManifest中添加开发密钥、所需权限等信息;(引自百度地图api官方文档)
在application中添加开发密钥
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
</application>
添加所需权限(注意: 权限应添加在 appliction 之外,如添加到appliction 内部,会导致无法访问网络,不显示地图。)
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.INTERNET"/>
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//读取设备硬件信息,统计数据
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//获取统计数据
<uses-permission android:name="android.permission.GET_TASKS" />
//鉴权所需该权限获取进程列表
<uses-permission android:name="android.permission.CAMERA" />
//使用步行AR导航,配置Camera权限
3、在布局xml文件中添加地图控件
<com.baidu.mapapi.map.TextureMapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="7.21"
android:clickable="true" >
</com.baidu.mapapi.map.TextureMapView>
…注 关于安卓项目安全码获取
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key
跟着步骤一步一步做就好 ,包名就填项目中要使用百度地图的类的包名
显示地图的全部代码
-----------------xml中的代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#f8f8ff"
android:orientation="vertical" >
<com.baidu.mapapi.map.TextureMapView
android:id="@+id/RegionalCoordinatesbRegionMap"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" >
</com.baidu.mapapi.map.TextureMapView>
</LinearLayout>
class类中的代码,其中包含多位置标点 点击标点显示提示文本框并在点击文本框时执行对应的点击事件
public class RegionalCoordinates extends Activity{
private BaiduMap baiduMap;
private TextureMapView mMapView;
private MapStatusUpdate msu ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.regional_coordinates);
mMapView = (TextureMapView) findViewById(R.id.RegionalCoordinatesbRegionMap);
init();
}
private void init() {
// TODO Auto-generated method stub
baiduMap = mMapView.getMap();
baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
baiduMap.setTrafficEnabled(true);
// 设置初始加载位置
msu = MapStatusUpdateFactory.newLatLngZoom(new LatLng(24.800427,118.599943),13);
baiduMap.setMapStatus(msu);
List<OverlayOptions> options = new ArrayList<OverlayOptions>();
for (Map<String, Object> map : DatasStatistics.getRegionMap()) {
Map<String, Object> obj= (Map<String, Object>) map.get("datastatistics");
//构建Marker图标
BitmapDescriptor bitmap;
//用来构造InfoWindow
if(obj==null||(Double)obj.get("blockagedegree")>20){
bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.exception);
}else{
bitmap = BitmapDescriptorFactory
.fromResource(R.drawable.yes);
}
//定义Maker坐标点
LatLng point1 = new LatLng((Double) map.get("latitude"), (Double) map.get("longitude"));
//构建MarkerOption,用于在地图上添加Marker
OverlayOptions option1 = new MarkerOptions()
.position(point1)
.icon(bitmap);
options.add(option1);
}
baiduMap.addOverlays(options);
//获取地图标记点击事件
baiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {
//加载标点上方文本点击事件
InfoWindow.OnInfoWindowClickListener listener = new InfoWindow.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick() {
Intent i = new Intent(RegionalCoordinates.this, SingleDetails.class);
startActivity(i);
overridePendingTransition(R.anim.fade_out,R.anim.fade_in);
}
};
//加载标点点击事件
@Override
public boolean onMarkerClick(Marker mak) {
//设置文本标题
BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.tips);
LatLng latLng =mak.getPosition();
//设置参数为了得到详情利用经纬度
DatasStatistics.setLatLng(latLng);
//传值显示
InfoWindow mInfoWindow = new InfoWindow(bitmap, latLng, -30, listener);
baiduMap.showInfoWindow(mInfoWindow);
return false;
}
});
//在地图上添加Marker,并显示
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
@Override
public void onBackPressed() {
Intent i = new Intent(RegionalCoordinates.this, TableDetails.class);
startActivity(i);
overridePendingTransition(R.anim.fade_out,R.anim.fade_in);
}
private long logOut =0;
private long lastClickTime=0;
}
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Uri uri = Uri.parse("http://api.map.baidu.com/geocoder?location="+
DatasStatistics.getLatLng().latitude+","+DatasStatistics.getLatLng().longitude+"&coord_type=bd09ll&output=html&src=webapp.baidu.openAPIdemo");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});