您的位置:首页 > 其它

百度地图系列03——简单地图定位

2015-11-27 18:23 204 查看

百度地图系列03——简单地图定位

关于加载地图,可参考前面一章http://blog.csdn.net/u013293125/article/details/49951257,基本代码没变

1、首先加入jar包



其它与第一章一样,基本没变。

2、代码部分,在MainActivity里:

package com.example.maptest003;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.LocationData;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationOverlay;
import com.baidu.platform.comapi.basestruct.GeoPoint;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {
private MapView mMapView = null;
private BMapManager bMapManager;
private MapController mMapController;
//定位相关
LocationClient mLocationClient;
LocationData locData = null;
public MyLocationListenner myListener = new MyLocationListenner();
//定位图层
//  locationOverlay myLocationOverlay = null;
MyLocationOverlay locOverlay;

//  boolean isRequest = false;//是否手动触发请求定位
boolean isFirstLoc = true;//是否首次定位
boolean isLocationClientStop = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
bMapManager = new BMapManager(getApplication());
//第一个参数是你申请的KEY值,稍后介绍,这个初始化必须写在setContentView
//前面
bMapManager.init("utOV22bi9PAzd6h3KzoSfD8A", null);
setContentView(R.layout.activity_main);
//找到地图控件
mMapView = (MapView) findViewById(R.id.maplistv);
//不用以下方法也可以加载出地图
mMapController = mMapView.getController();
mMapController.enableClick(true);   //设置地图是否响应点击事件
mMapController.setZoom(14);   //设置地图缩放级别
mMapView.setBuiltInZoomControls(true);

//定位初始化
mLocationClient = new LocationClient( this );
locData = new LocationData();
mLocationClient.registerLocationListener( myListener );
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);//打开gps
option.setCoorType("bd09ll");     //设置坐标类型,这里是09LL
option.setScanSpan(5000);
mLocationClient.setLocOption(option);
mLocationClient.start();

locOverlay = new MyLocationOverlay(mMapView);
locOverlay.setData(locData);

mMapView.getOverlays().add(locOverlay);
locOverlay.enableCompass();
//修改定位数据后刷新图层生效
mMapView.refresh();
//显示内置缩放控件
//114.27071,30.444669
//        double lat = 30.444669;
//        double lng = 114.27071;
//        GeoPoint point = new GeoPoint((int)(lat*1e6),(int)(lng*1e6));
//        mMapController.setCenter(point);

}
public class MyLocationListenner implements BDLocationListener {

@Override
public void onReceiveLocation(BDLocation location) {
if (location == null || isLocationClientStop)
return ;
locData.latitude = location.getLatitude();
locData.longitude = location.getLongitude();
//如果不显示定位精度圈,将accuracy赋值为0即可
locData.accuracy = location.getRadius();
locData.direction = location.getDerect();
//更新定位数据

locOverlay.setData(locData);
//更新图层数据执行刷新后生效
mMapView.refresh();
//是手动触发请求或首次定位时,移动到定位点
if (isFirstLoc){
//移动地图到定位点
mMapController.animateTo(new GeoPoint((int)(locData.latitude* 1e6), (int)(locData.longitude *  1e6)));
//                isRequest = false;
}
//首次定位完成
isFirstLoc = false;
}

public void onReceivePoi(BDLocation poiLocation) {
if (poiLocation == null){
return ;
}
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mMapView.destroy();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
mMapView.onPause();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
mMapView.onResume();
}
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  百度地图 地图 定位