本实例详细介绍了如何在Android应用中集成并使用百度地图API进行精准定位。通过具体代码示例和步骤说明,帮助开发者快速掌握其实现方法与技巧。
为了使用百度地图API进行开发,请按照以下步骤操作:
1. 在开发者中心注册一个个人或公司的账号。
2. 登录到开发者平台,并创建一个新的应用以申请Key。
3. 完成应用的创建流程后,点击相关下载按钮来获取所需的文件包。
4. 当调用百度地图的应用时,在`AndroidManifest.xml`中添加如下代码:
```xml
这里需要插入你的Key,创建应用后会在开发者平台提供。
```
5. 在代码中实现百度地图API的调用,以下是一个示例类:
```java
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.*;
import com.baidu.mapapi.search.geocode.GeoCodeResult;
import com.baidu.mapapi.search.geocode.GeoCoder;
import android.os.Bundle;
public class MapApiDemoActivity extends Activity implements OnGetGeoCoderResultListener {
private MapView mMapView = null;
private BaiduMap mBaiduMap = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_map_api_demo);
init();
final Button btn_location = (Button) findViewById(R.id.btn_location);
btn_location.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
getLocation();
btn_location.setEnabled(false);
}
});
}
private void init() {
mMapView = new MapView(this, new BaiduMapOptions());
mBaiduMap = mMapView.getMap();
RelativeLayout rlly_map = (RelativeLayout)findViewById(R.id.rlly_map);
rlly_map.addView(mMapView);
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
public void onDestroy() {
// 停止定位并关闭地图
mLocClient.stop();
mBaiduMap.setMyLocationEnabled(false);
mMapView.onDestroy();
mMapView = null;
super.onDestroy();
}
LocationClient mLocClient;
private MyLocationListenner myListener = new MyLocationListenner();
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
if (location == null || mMapView == null)
return;
// 设置定位数据
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);
}
}
public void onReceivePoi(BDLocation poiLocation) {}
}
private void getLocation() {
// 初始化定位
mLocClient = new LocationClient(this);
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setCoorType(bd09ll);
option.setScanSpan(5000);
mLocClient.setLocOption(option);
mLocClient.start();
}
```