[转载]Android关于百度地图定位的使用

[转载]关于百度地图的使用 - 网络渔夫 - 博客园.

在android手机上使用百度地图来定位的资料在网上很难找到,经过两天的折腾,终于搞出来了。下面的代码已经实现完整定位,需要注意的就是,如果你的 百度地图的底图未显示出来,请确保你手机能使用GPRS(以移动为例)或WIFI联网,要使用精确定位的话,也必须要打开GPS。下面我们直接上代码,代 码说明,百度里面有,一看就知道:

step1 AndroidManifest.xml文件
[xml]




















[/xml]
step2 首先建立一个全局应用类,主要是创建一个BMapManager实例,为了方便管理
[java]
package com.studio.basf.mapdemo;

import android.app.Application;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKEvent;
import com.baidu.mapapi.MKGeneralListener;

public class MapManagerApplication extends Application {
BMapManager bMapManager = null;

static class MyGeneralListener implements MKGeneralListener {

@Override
public void onGetNetworkState(int iError) {

}

@Override
public void onGetPermissionState(int iError) {
if (iError == MKEvent.ERROR_PERMISSION_DENIED) {

}
}
}

@Override
public void onCreate() {
// TODO Auto-generated method stub
bMapManager = new BMapManager(this);
bMapManager.init("你的key", new MyGeneralListener());
}
}
[/java]
step3 继承MapActivity,同时实现LocationListener接口
[java]
package com.studio.basf.mapdemo;

import android.location.Location;
import android.os.Bundle;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MKLocationManager;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.MyLocationOverlay;

public class MainActivity extends MapActivity implements LocationListener {
private BMapManager mBMapMan = null;
private MapView mMapView = null;
private MapController mMapController = null;
private MKLocationManager locationManager = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mBMapMan = ((MapManagerApplication) getApplication()).bMapManager;
if (mBMapMan == null) {
((MapManagerApplication) getApplication()).bMapManager = new BMapManager(
getApplication());
((MapManagerApplication) getApplication()).bMapManager.init(
"你的key",
new MapManagerApplication.MyGeneralListener());
mBMapMan = ((MapManagerApplication) getApplication()).bMapManager;
}
super.initMapActivity(mBMapMan);

locationManager = mBMapMan.getLocationManager();
locationManager.requestLocationUpdates(this);

mMapView = (MapView) findViewById(R.id.bmapsView);
mMapView.setBuiltInZoomControls(true);// 设置启用默认的缩放控件

mMapController = mMapView.getController();// 得到mMapView的控制权,可以用它控制和驱动平移和缩放
mMapController.setZoom(12);// 设置地图zoom级别

MyLocationOverlay mylocTest = new MyLocationOverlay(this, mMapView);
mylocTest.enableMyLocation();
mylocTest.enableCompass();
mMapView.getOverlays().add(mylocTest);
}

@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub

if (location != null) {
mMapController.animateTo(new GeoPoint(
(int) (location.getLatitude() * 1E6), (int) (location
.getLongitude() * 1E6)));
}
}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if (mBMapMan != null) {
mBMapMan.destroy();
((MapManagerApplication) getApplication()).bMapManager = null;
mBMapMan = null;
}
super.onDestroy();
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
if (mBMapMan != null) {
mBMapMan.stop();
}
super.onPause();
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
if (mBMapMan != null) {
mBMapMan.start();
}
super.onResume();
}

@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
[/java]
因为代码在需要在真机上运行才能看到效果,所以我这里就截图,上面的代码直接复制下来就可以使用。