百度地图如何显示自己的位置,按照官方文档做的,如何定位自己位置或以自己为中心的一定范围内 , 源码如下:
package com.shaccp.ui;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.ItemizedOverlay;
import com.baidu.mapapi.LocationListener;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.MKLocationManager;
import com.baidu.mapapi.MKPlanNode;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.MyLocationOverlay;
import com.baidu.mapapi.Overlay;
import com.baidu.mapapi.OverlayItem;
import com.baidu.mapapi.PoiOverlay;
import com.baidu.mapapi.RouteOverlay;
import com.baidu.mapapi.TransitOverlay;
public class BaiduMap extends MapActivity {
private BMapManager mBMapMan = null;
private MapView mMapView = null;
private MyLocationOverlay mLocationOverlay = null;
private MKLocationManager mLocationManager = null;
private LocationListener mLocationListener = null;
private MapController mMapController = null;
private MKSearch mMKSearch = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
mBMapMan = new BMapManager(getApplication());
mBMapMan.init("FE81BC4303929E67128FE2C57B23BBED7E277002", null);
super.initMapActivity(mBMapMan);
mMapView = (MapView) findViewById(R.id.bmapsView);
mMapView.setBuiltInZoomControls(true); // 设置启用内置的缩放控件
mMapView.setDrawOverlayWhenZooming(true);// 设置缩放的过程显示图层
mMapController = mMapView.getController(); // 得到mMapView的控制权,可以用它控制和驱动平移和缩放
if(mLocationManager==null){
GeoPoint point = new GeoPoint((int) (43.88 * 1E6),
(int) (125.34 * 1E6));
mMapController.setCenter(point);
}
// MapController mMapController = mMapView.getController();
// mLocationOverlay = new MyLocationOverlay(BaiduMap.this, mMapView);//
// 添加定位图层
// mMapView.getOverlays().add(mLocationOverlay);
// GeoPoint pt =null;
mLocationManager = mBMapMan.getLocationManager();
MyLocationOverlay mylocTest = new MyLocationOverlay(BaiduMap.this,
mMapView);
mylocTest.enableMyLocation();// 启动定位
mylocTest.enableCompass();// 启动指南针
mMapView.getOverlays().add(mylocTest);// 添加图层
mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if (location != null) {
GeoPoint geoPoint = new GeoPoint(
(int) (location.getLatitude() * 1e6),
(int) (location.getLongitude() * 1e6));
mMapView.getController().animateTo(geoPoint);
mMapController.setCenter(geoPoint);
mMapController.setZoom(12); // 设置地图zoom级别
}
}
};
// mMKSearch.poiSearchNearBy("KFC", new GeoPoint((int) (39.915 * 1E6),
// (int) (116.404 * 1E6)), 5000);
// mMKSearch.init(mBMapMan, new MySearchListener());//绑定监听
// GeoPoint point = new GeoPoint((int) (39.915 * 1E6),
// (int) (116.404 * 1E6)); // 用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
// mMapController.setCenter(pt); // 设置地图中心点
// mMapController.setZoom(12); // 设置地图zoom级别
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add(0, 0, 0, R.string.location);// 定位
menu.add(0, 1, 1, R.string.neighborhood);// 附近
menu.add(0, 2, 2, R.string.xuni);// 虚拟
menu.add(0, 3, 3, R.string.xunifujin);// 虚拟附近
menu.add(0, 4, 4, R.string.weibo);// 返回微博
return super.onCreateOptionsMenu(menu);
}
// 搜索服务
public class MySearchListener implements MKSearchListener {
@Override
public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onGetPoiResult(MKPoiResult result, int arg1, int arg2) {
// TODO Auto-generated method stub
if (result == null) {
return;
}
PoiOverlay poioverlay = new PoiOverlay(BaiduMap.this, mMapView);
poioverlay.setData(result.getAllPoi());
mMapView.getOverlays().add(poioverlay);
}
@Override
public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
// TODO Auto-generated method stub
}
}
// 菜单选项
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
int item_Id = item.getItemId();
switch (item_Id) {
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
Intent j = new Intent(BaiduMap.this, Main.class);
startActivity(j);
break;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
if (mBMapMan != null) {
mBMapMan.destroy();
mBMapMan = null;
}
super.onDestroy();
}
@Override
protected void onPause() {
if (mBMapMan != null) {
// 终止百度地图API
mBMapMan.getLocationManager().removeUpdates(mLocationListener);
mLocationOverlay.disableMyLocation();
mLocationOverlay.disableCompass(); // 关闭指南针
mBMapMan.stop();
}
super.onPause();
}
// 获得用户焦点
@Override
protected void onResume() {
if (mBMapMan != null) {
// 开启百度地图API
// 注册定位事件,定位后将地图移动到定位点
// mBMapMan.getLocationManager().requestLocationUpdates(
// mLocationListener);
// mLocationOverlay.enableMyLocation();
// mLocationOverlay.enableCompass(); // 打开指南针
mBMapMan.start();
Log.i("BaiduMap","------OnResume()-------");
}
super.onResume();
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
}
原文地址:点击打开链接