本文共 3558 字,大约阅读时间需要 11 分钟。
首先,访问百度地图开放平台官网:https://map.baidu.com。在页面底部选择“地图开放平台”,然后在控制台中创建你的应用。完成注册后,按照指引导入开发者证书,继续下一步操作。
下载百度地图开发者SDK包,包含BaiduLBS_AndroidSDK_Lib.aar文件。将该文件放入你的项目libs目录下。
在项目的build.gradle文件中添加以下依赖:
implementation(name: 'BaiduLBS_AndroidSDK_Lib', ext: 'aar')
在Android Studio中,点击右上角的“导入依赖”图标,选择“BaiduLBS_AndroidSDK_Lib.aar”文件进行导入。
在百度地图控制台中,生成API密钥。将这些密钥添加到你的项目中,确保开发和发布环境的密钥不重复。
将生成的密钥文件(如app-debug.keystore)复制到你的项目jre/bin目录下。
运行以下命令验证证书:
keytool -list -v -keystore debug.keystore
在MainActivity中初始化定位客户端:
private void startLocation() { mlocationClient = new LocationClient(MainActivity.this); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); option.setCoorType("bd09ll"); option.setScanSpan(1000); mlocationClient.setLocOption(option); MyLocationListener locationListener = new MyLocationListener(); mlocationClient.registerLocationListener(locationListener); mlocationClient.start();}
class MyLocationListener extends BDAbstractLocationListener { @Override public void onReceiveLocation(BDLocation location) { Log.e("MyLocationListener", "onReceiveLocation " + location.toString()); if (location == null || mMapView == null) { return; } LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(latLng); mBaiduMap.animateMapStatus(update); // 位置数据处理 MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) .direction(location.getDirection()) .latitude(location.getLatitude()) .longitude(location.getLongitude()) .build(); mBaiduMap.setMyLocationData(locData); }}
baiduMap.setOnMapClickListener(new BaiduMap.OnMapClickListener() { @Override public void onMapClick(LatLng latLng) { Log.e("onMapClick", latLng.toString()); } @Override public void onMapPoiClick(MapPoi mapPoi) { Log.e("onMapPoiClick", mapPoi.getName() + mapPoi.getPosition().toString()); }});
baiduMap.setOnMapLongClickListener(new BaiduMap.OnMapLongClickListener() { @Override public void onMapLongClick(LatLng latLng) { Log.e("OnMapLongClick", latLng.toString()); // 添加一个方框 LatLng p1 = new LatLng(latLng.latitude + 0.005, latLng.longitude - 0.005); LatLng p2 = new LatLng(latLng.latitude - 0.005, latLng.longitude - 0.005); LatLng p3 = new LatLng(latLng.latitude - 0.005, latLng.longitude + 0.005); LatLng p4 = new LatLng(latLng.latitude + 0.005, latLng.longitude + 0.005); Listpoints = new ArrayList<>(); points.add(p1); points.add(p2); points.add(p3); points.add(p4); points.add(p1); OverlayOptions mOverlayOptions = new PolylineOptions() .width(10) .color(0xAAFF0000) .points(points); Overlay mPolyline = baiduMap.addOverlay(mOverlayOptions); }});
确保在Activity生命周期中正确管理地图视图:
@Overrideprotected void onResume() { super.onResume(); mMapView.onResume();}@Overrideprotected void onPause() { super.onPause(); mMapView.onPause();}@Overrideprotected void onDestroy() { super.onDestroy(); mMapView.onDestroy();}
通过以上步骤,你可以成功实现百度地图的定位功能,并对地图进行相应的事件处理和定制操作。
转载地址:http://fxqaz.baihongyu.com/