package com.ry.mybaidumapdemo;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
public MapView bmapView = null;
public BaiduMap baiduMap = null;
//定位的相关声明
public LocationClient LocationClient = null;
//自定义图标
BitmapDescriptor mCurrentMark = null;
boolean isFirstLoc = true; //是否是首次定位
public BDLocationListener myListener = new BDLocationListener() {
@Override
public void onReceiveLocation(BDLocation location) {
//MapView 销毁后不再处理 接收新的位置
if(location==null||bmapView==null) {
return;
}
MyLocationData locData = new MyLocationData.Builder().accuracy
(location.getRadius()).direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
//设置定位数据
baiduMap.setMyLocationData(locData);
if(isFirstLoc) { //第一次定位
isFirstLoc=!isFirstLoc; //改变值 如果是false 则进不来了
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16); //设置地图中心点以及 缩放级别
baiduMap.animateMapStatus(u);
}
}
@Override
public void onConnectHotSpotMessage(String arg0, int arg1) {
// TODO Auto-generated method stub
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext()); //初使化context信息
setContentView(R.layout.activity_main);
bmapView = (MapView) findViewById(R.id.bmapView);
bmapView.showZoomControls(true); //设置是否显示缩放控件
baiduMap=bmapView.getMap();
//开启定位图层
baiduMap.setMyLocationEnabled(true);
LocationClient = new LocationClient(getApplicationContext());//实例化 LocationClient类
LocationClient.registerLocationListener(myListener);//注册监听函数
//设置定位参数
this.setLocationOption();
LocationClient.start(); //开启定位
}
/**
* 设置定位参数
*/
private void setLocationOption() {
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); //打开Gps
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置成定位模式
option.setCoorType("bd09ll"); //返回的结果 是百度的经纬度,默认值 gcj02
option.setScanSpan(5000);//设置发起定位 请求的时间隔为5000ms
option.setIsNeedAddress(true);//返回的定位结果包含地址信息
option.setNeedDeviceDirect(true);//返回的定位结果 包含手机机头的方向
LocationClient.setLocOption(option);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
bmapView.onDestroy();
bmapView=null;
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
bmapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
bmapView.onPause();
}
}
Android 百度地图定位 代码
最新推荐文章于 2024-05-15 19:50:40 发布