您的位置:首页 > 移动开发 > Android开发

百度地图android版 自我定位实现

2012-08-15 10:31 375 查看
package com.example.mybaidumaptest;

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.MapActivity;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.MyLocationOverlay;

public class LocationActivity extends MapActivity {
private MapView locationMapView = null;
MyLocationOverlay myLocationOverlay = null;
LocationListener locationListener = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

BMapManager mapManager = new BMapManager(getApplication());
//填写key值
                mapManager.init("填自己的KEY值", null);
mapManager.start();
// 如果使用地图SDK,请初始化地图Activity
super.initMapActivity(mapManager);

locationMapView = (MapView) findViewById(R.id.locationMapView);
locationMapView.setBuiltInZoomControls(true);
locationMapView.setDrawOverlayWhenZooming(true);// 设置在缩放动画过程中也显示overlay,默认为不绘制

locationMapView.getController().setZoom(15);

// 画图层
myLocationOverlay = new MyLocationOverlay(this,locationMapView);
locationMapView.getOverlays().add(myLocationOverlay);

locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
GeoPoint point = new GeoPoint(
(int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));
locationMapView.getController().animateTo(point);
}
}
};
}

@Override
protected boolean isRouteDisplayed() {
return false;
}

/*
onPause  onResume必须要写 不然地图无法定位正确
开发文档对定位类的解释
public class MyLocationOverlay extends Overlay implements LocationListener, Overlay.Snappable
一个负责显示用户当前位置的Overlay。
Overlay是一个覆盖,它绘制用户当前在地图上的位置(精准度),或一个嵌入的指南针。子类能覆盖方法dispatchTap()去处理对当前位置的点击。
为了开启这个overlay的功能,需要去调用enableMyLocation()和/或enableCompass(),
或调用Activity中的Activity.onResume()方法。记住,当在后台是,要在Activity中的Activity.onPause()方法中调用
相应的disableMyLocation()和/或disableCompass()关闭这个功能。
*/
@Override
protected void onPause() {
BMapManager bm = new BMapManager(getApplication());
bm.getLocationManager().removeUpdates(locationListener);
myLocationOverlay.disableCompass();
myLocationOverlay.disableMyLocation();
bm.stop();
super.onPause();
}
@Override
protected void onResume() {
BMapManager bm = new BMapManager(getBaseContext());
bm.getLocationManager().requestLocationUpdates(locationListener);
myLocationOverlay.enableCompass();
myLocationOverlay.enableMyLocation();
bm.start();
super.onResume();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息