1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 即时定位java 百度地图实时获取当前位置坐标并实时定位

即时定位java 百度地图实时获取当前位置坐标并实时定位

时间:2019-12-25 18:25:59

相关推荐

即时定位java 百度地图实时获取当前位置坐标并实时定位

废话不多说 , 直接上源码 。(希望各位顶一下,想要点积分。。。)

1.配置:

配置:

2.添加各种权限,各种权限,请参考百度官方指南。其中有一个service,尤其要注意添加 。

(测试的时候,最好在真机上进行测试。)

3贴代码喽

package .app;

import java.util.Map;

import org.xml.sax.helpers.LocatorImpl;

import com.baidu.location.BDLocation;

import com.baidu.location.BDLocationListener;

import com.baidu.location.BDNotifyListener;

import com.baidu.location.LocationClient;

import com.baidu.location.LocationClientOption;

import com.baidu.mapapi.BMapManager;

import android.app.Activity;

import android.location.Location;

import android.location.LocationListener;

import android.os.Bundle;

import android.os.Handler;

import android.util.Log;

import android.widget.Toast;

import com.baidu.mapapi.*;

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.api.basestruct.GeoPoint;

public class MapActivity extends Activity{

private static final String TAG = "TAG" ;

private BMapManager mBMapManager = null;

private MapView mMapView = null;

//获取地点位置信息

private LocationClient locationClient = null;

private BDLocationListener bdLocationListener = new MyLocationListener();

//定位到当前位置

private MyLocationOverlay myLocationOverlay = null;

private LocationData locationData = null;

Handler mHandler = new Handler() {

public void handleMessage(android.os.Message msg) {

Toast.makeText(getApplicationContext(), "msg:" +msg.what, Toast.LENGTH_SHORT).show();

};

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mBMapManager = new BMapManager(getApplication());

mBMapManager.init(this.getString(R.string.mapKey), null);

mBMapManager.start() ;

//注意:请在试用setContentView前初始化BMapManager对象,否则会报错

setContentView(R.layout.map);

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

//设置启用内置的缩放控件

mMapView.setBuiltInZoomControls(true);

// 得到mMapView的控制权,可以用它控制和驱动平移和缩放

MapController mMapController = mMapView.getController();

locationClient = new LocationClient(getApplicationContext());

locationClient.registerLocationListener(bdLocationListener);

LocationClientOption option = new LocationClientOption();

option.setOpenGps(true); //是否打开GPRS

option.setAddrType("all");//返回的定位结果包含地址信息

option.setCoorType("bd09ll");//返回的定位结果是百度经纬度,默认值gcj02

option.setScanSpan(50000);//设置发起定位请求的间隔时间为5000ms

option.disableCache(true);//禁止启用缓存定位

option.setPoiNumber(5); //最多返回POI个数

option.setPoiDistance(1000); //poi查询距离

option.setPriority(WorkFirst);

locationClient.setLocOption(option);

locationClient.start();

if(locationClient!=null && locationClient.isStarted()){

locationClient.requestLocation() ;

locationClient.requestPoi() ;

}else {

Log.d(TAG, "locClient is null or not started");

}

//设置地图zoom级别

mMapController.setZoom(12);

myLocationOverlay = new MyLocationOverlay(mMapView);

locationData = new LocationData() ;

myLocationOverlay.setData(locationData);

mMapView.getOverlays().add(myLocationOverlay);

myLocationOverlay.enableCompass();

mMapView.refresh();

}

@Override

protected void onStart() {

locationClient.start() ;

super.onStart();

}

@Override

protected void onStop() {

locationClient.stop() ;

super.onStop();

}

@Override

protected void onDestroy(){

mMapView.destroy();

locationClient.unRegisterLocationListener(bdLocationListener) ;

if(mBMapManager!=null){

mBMapManager.destroy();

mBMapManager=null;

}

locationClient.stop() ;

myLocationOverlay.disableCompass() ;

myLocationOverlay = null;

mMapView = null;

locationClient = null;

locationData = null;

super.onDestroy();

}

@Override

protected void onPause(){

mMapView.onPause();

if(mBMapManager!=null){

mBMapManager.stop();

}

locationClient.stop() ;

super.onPause();

}

@Override

protected void onResume(){

mMapView.onResume();

if(mBMapManager!=null){

mBMapManager.start();

}

locationClient.start() ;

super.onResume();

}

// 获取当前位置信息的类

private class MyLocationListener implements BDLocationListener{

@Override

public void onReceiveLocation(BDLocation position) {

// Log.v(TAG, "onReceiveLocation--->getLatitude--->"+String.valueOf(position.getLatitude())) ;

// Log.v(TAG, "onReceiveLocation--->getLocType--->"+String.valueOf(position.getLongitude())) ;

// Log.v(TAG, "onReceiveLocation--->getRadius--->"+String.valueOf(position.getRadius())) ;

// Log.v(TAG, "onReceiveLocation--->position--->"+String.valueOf(position.getAddrStr())) ;

locationData.latitude = position.getLatitude();

locationData.longitude = position.getLongitude();

locationData.accuracy = position.getRadius();

locationData.direction = position.getDerect();

myLocationOverlay.setData(locationData);

mMapView.refresh();

mMapView.getController().animateTo(new GeoPoint((int)(locationData.latitude* 1e6), (int)(locationData.longitude * 1e6)), mHandler.obtainMessage(1));

}

@Override

public void onReceivePoi(BDLocation position) {

//这个函数貌似没有什么大的作用 。

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。