android百度地图开发2014,android 百度地图开发

packagesposition.webjoy.net.sendposition;importandroid.os.Bundle;importandroid.support.design.widget.FloatingActionButton;importandroid.support.v7.app.AppCompatActivity;importandroid.support.v7.widget.Toolbar;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.Toast;importcom.baidu.location.BDLocation;importcom.baidu.location.BDLocationListener;importcom.baidu.location.LocationClient;importcom.baidu.location.LocationClientOption;importcom.baidu.mapapi.SDKInitializer;importcom.baidu.mapapi.map.BaiduMap;importcom.baidu.mapapi.map.BitmapDescriptor;importcom.baidu.mapapi.map.BitmapDescriptorFactory;importcom.baidu.mapapi.map.MapStatusUpdate;importcom.baidu.mapapi.map.MapStatusUpdateFactory;importcom.baidu.mapapi.map.MapView;importcom.baidu.mapapi.map.MyLocationConfiguration;importcom.baidu.mapapi.map.MyLocationData;importcom.baidu.mapapi.model.LatLng;public class MainActivity extendsAppCompatActivity {private MapView mMapView = null;privateBaiduMap baiduMap;//定位相关

privateLocationClient locationClient;privateBDLocationListener bdLocationListener;private Boolean isFirstIn = true;//设置用户默认位置//记录经纬度

private doublemLatitude;private doublemlongtitude;//自定义图标

privateBitmapDescriptor mIconLocation;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//在使用SDK各组件之前初始化context信息,传入ApplicationContext//注意该方法要再setContentView方法之前实现

SDKInitializer.initialize(getApplicationContext());

setContentView(R.layout.activity_main);

Toolbar toolbar=(Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

FloatingActionButton fab=(FloatingActionButton) findViewById(R.id.fab);

fab.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View view) {

centerToMyLocation(mLatitude, mlongtitude);

}

});//初如化地图

initValue();//定位初始化

initPosition();

}/*** 定位到我的位置

*@parammLatitude

*@parammlongtitude*/

private void centerToMyLocation(double mLatitude, doublemlongtitude) {

LatLng latLng= newLatLng(mLatitude, mlongtitude);

MapStatusUpdate msu=MapStatusUpdateFactory.newLatLng(latLng);

baiduMap.animateMapStatus(msu);//重新设置位置

}private voidinitPosition() {

locationClient= new LocationClient(this);

bdLocationListener= newMyLocationListener();

locationClient.registerLocationListener(bdLocationListener);

LocationClientOption clientOption= newLocationClientOption();

clientOption.setCoorType("bd09ll");

clientOption.setIsNeedAddress(true); //返回位置

clientOption.setOpenGps(true);//开启GPS

clientOption.setScanSpan(1000);

locationClient.setLocOption(clientOption);//定位图标

mIconLocation =BitmapDescriptorFactory.fromResource(R.mipmap.navi_map_gps_locked);

}private voidinitValue() {//获取地图控件引用

mMapView =(MapView) findViewById(R.id.bmapView);

baiduMap=mMapView.getMap();

MapStatusUpdate mapStatusUpdate= MapStatusUpdateFactory.zoomTo(15.0f);

baiduMap.setMapStatus(mapStatusUpdate);

}

@Overridepublic booleanonCreateOptionsMenu(Menu menu) {//Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.menu_main, menu);return true;

}

@Overridepublic booleanonOptionsItemSelected(MenuItem item) {int id =item.getItemId();switch(id){caseR.id.id_map_common:

{

baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);

}break;caseR.id.id_map_site:

{

baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);

}break;caseR.id.id_map_traffic:

{if(baiduMap.isTrafficEnabled()){

baiduMap.setTrafficEnabled(false);

}else{

baiduMap.setTrafficEnabled(true);

}

}break;

}return super.onOptionsItemSelected(item);

}

@Overrideprotected voidonDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理

mMapView.onDestroy();

}

@Overrideprotected voidonResume() {super.onResume();//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理

mMapView.onResume();

}

@Overrideprotected voidonPause() {super.onPause();//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理

mMapView.onPause();

}/*** 定义一个监听类*/

private class MyLocationListener implementsBDLocationListener{

@Overridepublic voidonReceiveLocation(BDLocation bdLocation) {//定位成功后的回调

MyLocationData data = new MyLocationData.Builder()// .accuracy(bdLocation.getRadius())//精定

.latitude(bdLocation.getLatitude())//方向

.longitude(bdLocation.getLongitude())

.build();

baiduMap.setMyLocationData(data);//自定义图标

MyLocationConfiguration config = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL,true,mIconLocation);

baiduMap.setMyLocationConfigeration(config);

mLatitude=bdLocation.getLatitude();

mlongtitude=bdLocation.getLongitude();if(isFirstIn){//得到经度和纬度

centerToMyLocation(bdLocation.getLatitude(), bdLocation.getLongitude());

isFirstIn= false;

Toast.makeText(MainActivity.this,"定位成功"+bdLocation.getAddrStr(),Toast.LENGTH_SHORT).show();

}

}

}

@Overrideprotected voidonStart() {super.onStart();

baiduMap.setMyLocationEnabled(true);//开启定位

if (!locationClient.isStarted()) {

locationClient.start();

}

}

@Overrideprotected voidonStop() {super.onStop();//不允许定位

baiduMap.setMyLocationEnabled(false);

locationClient.stop();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值