百度地图集成

本文详细介绍了如何在Android应用中集成百度地图SDK,包括下载SDK、配置应用密钥、实现地图视图展示、定位功能及导航功能的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先到百度地图开发者中心下载相关Sdk和文件
在AndroidManifest.xml 中添加你的key和服务
<application> 中添加百度的Service和key,下面在百度地图集成中也有显示

 
<meta-data  android:name="com.baidu.lbsapi.API_KEY"  android:value="你自己的Key" /> <service  android:name="com.baidu.location.f"  android:enabled="true"  android:process=":remote"></service>

 

</application>

 

//首先在Application中初始化,记得在AndroidManifest.xml的application中使用name调用

 
public class MyApplication extends Application { @Override  public void onCreate() { super.onCreate();  SDKInitializer.initialize(getApplicationContext());  } }

//在布局中使用百度地图


 
<com.baidu.mapapi.map.MapView  android:id="@+id/map"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:clickable="true"></com.baidu.mapapi.map.MapView>

 

下面这个类是定位的,百度给的集成文档中不全面

 


 
public class LocationActivity extends AppCompatActivity { // 定位相关  MapView mMapView;  BaiduMap mBaiduMap;   // 定位相关  LocationClient mLocClient;   //定位回调监听  public MyLocationListenner myListener = new MyLocationListenner();   //MyLocationData 可以理解成当前位置  private MyLocationData locData;   // 是否首次定位  boolean isFirstLoc = true;   private double mCurrentLat = 0.0;  private double mCurrentLon = 0.0;    @Override  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);  setContentView(R.layout.activity_location2);    //如果定位不准确(到非洲几内亚湾),首先去设置App的应用权限,第二去检查sha1配置流程是否正确   mMapView = (MapView) findViewById(R.id.map);   //拿到baiduMap  mBaiduMap = mMapView.getMap();   // 开启定位图层 ,设置地图支持定位  mBaiduMap.setMyLocationEnabled(true);   // 定位初始化  mLocClient = new LocationClient(this);   //注册定位回调监听  mLocClient.registerLocationListener(myListener);   //设置定位的细节  LocationClientOption option = new LocationClientOption();  option.setOpenGps(true); // 打开gps  option.setCoorType("bd09ll"); // 设置坐标类型  option.setScanSpan(1000);  mLocClient.setLocOption(option);   //这个开始去定位  mLocClient.start();  } /**  * 定位SDK监听函数  */  public class MyLocationListenner implements BDLocationListener { @Override  public void onReceiveLocation(BDLocation location) { // map view 销毁后不在处理新接收的位置  if (location == null || mMapView == null) { return;  } //去拿经纬度  mCurrentLat = location.getLatitude();  mCurrentLon = location.getLongitude();   //显示当前位置  locData = new MyLocationData.Builder() //精确度  .accuracy(location.getRadius()) .latitude(location.getLatitude()) .longitude(location.getLongitude()) .build();   //把当前位置设置到map上  mBaiduMap.setMyLocationData(locData);   //第一次进入的时候,设置地图的缩放级别  if (isFirstLoc) { isFirstLoc = false;  LatLng ll = new LatLng(location.getLatitude(),  location.getLongitude());  MapStatus.Builder builder = new MapStatus.Builder();   //zoom设置地图缩放级别,越大的话地图的范围越大  builder.target(ll).zoom(18.0f);  mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));  } } } @Override  protected void onPause() { mMapView.onPause();  super.onPause();  } @Override  protected void onResume() { mMapView.onResume();  super.onResume();  } @Override  protected void onDestroy() { // 退出时销毁定位  mLocClient.stop();  // 关闭定位图层  mBaiduMap.setMyLocationEnabled(false);  mMapView.onDestroy();  mMapView = null;  super.onDestroy();  } }

 

下面这个是导航的Activity,设置一个按钮跳转打开手机上的百度地图,如果没有安装,会提示你下载

//注意导航和定位需要设置不同的 MAIN 启动Activity

 
<Button  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_centerInParent="true"  android:onClick="onClick"  android:text="开始导航" />

 

 
public class NavigationActivity extends AppCompatActivity { @Override  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);  setContentView(R.layout.activity_navigation);  } // 检查手机上是否安装了指定的软件  public static boolean isAvilible(Context context, String packageName) { //获取packagemanager  final PackageManager packageManager = context.getPackageManager();  //获取所有已安装程序的包信息  List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);  //用于存储所有已安装程序的包名  List<String> packageNames = new ArrayList<String>();  //从pinfo中将包名字逐一取出,压入pName list中  if (packageInfos != null) { for (int i = 0; i < packageInfos.size(); i++) { String packName = packageInfos.get(i).packageName;  packageNames.add(packName);  } } //判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE  return packageNames.contains(packageName);  } public void onClick(View view) { Intent intent;  if (isAvilible(this, "com.baidu.BaiduMap")) {//传入指定应用包名  try { intent = Intent.getIntent("intent://map/direction?" + //"origin=latlng:"+"34.264642646862,108.95108518068&" + //起点 此处不传值默认选择当前位置  "destination=北京西站" + //终点  "&mode=driving&" + "region=中国" + "&src=新浪#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");  this.startActivity(intent);  } catch (URISyntaxException e) { } } else { //未安装  //market为路径,id为包名  //显示手机上所有的market商店  Toast.makeText(this, "您尚未安装百度地图", Toast.LENGTH_LONG).show();  Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");  intent = new Intent(Intent.ACTION_VIEW, uri);  this.startActivity(intent);  } } }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值