package bwie
.baidumap
import android
.os.Bundle
import android
.os.Handler
import android
.os.Message
import android
.support.v7
.app.AppCompatActivity
import android
.util.Log
import android
.view.View
import android
.widget.Toast
import
com.baidu.location.BDLocation
import
com.baidu.location.BDLocationListener
import
com.baidu.location.LocationClient
import
com.baidu.location.LocationClientOption
import
com.baidu.location.Poi
import
com.baidu.mapapi.SDKInitializer
import
com.baidu.mapapi.map.BaiduMap
import
com.baidu.mapapi.map.MapStatus
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 java
.util.List
public class MainActivity extends AppCompatActivity {
MapView mMapView = null
public LocationClient mLocationClient = null
public BDLocationListener myListener = new MyLocationListener()
private BaiduMap mBaiduMap
@Override
protected void onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState)
SDKInitializer
.initialize(getApplicationContext())
setContentView(R
.layout.activity_main)
mMapView = (MapView) findViewById(R
.id.bmapView)
mBaiduMap = mMapView
.getMap()
mBaiduMap
.setMapStatus(MapStatusUpdateFactory
.newMapStatus(new MapStatus
.Builder()
.zoom(
15)
.build()))
mLocationClient = new LocationClient(getApplicationContext())
mLocationClient
.registerLocationListener(myListener)
initLocation()
}
private void initLocation() {
LocationClientOption option = new LocationClientOption()
option
.setLocationMode(LocationClientOption
.LocationMode.Hight_Accuracy)
option
.setCoorType(
"bd09ll")
int span =
100000
// option
.setScanSpan(span)
option
.setIsNeedAddress(true)
option
.setOpenGps(true)
option
.setLocationNotify(true)
option
.setIsNeedLocationDescribe(true)
option
.setIsNeedLocationPoiList(true)
option
.setIgnoreKillProcess(false)
option
.SetIgnoreCacheException(false)
option
.setEnableSimulateGps(false)
mLocationClient
.setLocOption(option)
}
public void qiehuan(View view) {
mBaiduMap
.setMapType(BaiduMap
.MAP_TYPE_SATELLITE)
}
public void putong(View view) {
mBaiduMap
.setMapType(BaiduMap
.MAP_TYPE_NORMAL)
}
public void dingwei(View view) {
mLocationClient
.start()
}
@Override
protected void onDestroy() {
super
.onDestroy()
//在activity执行onDestroy时执行mMapView
.onDestroy(),实现地图生命周期管理
mMapView
.onDestroy()
}
@Override
protected void onResume() {
super
.onResume()
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView
.onResume()
}
@Override
protected void onPause() {
super
.onPause()
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView
.onPause()
}
Handler handler = new Handler() {
private double mCurrentLongitude
private double mCurrentLantitude
@Override
public void handleMessage(Message msg) {
super
.handleMessage(msg)
BDLocation location = (BDLocation) msg
.obj
// 开启定位图层
mBaiduMap
.setMyLocationEnabled(true)
// 构造定位数据
MyLocationData locData = new MyLocationData
.Builder()
.accuracy(location
.getRadius())
// 此处设置开发者获取到的方向信息,顺时针
0-
360
.direction(
100)
.latitude(location
.getLatitude())
.longitude(location
.getLongitude())
.build()
// 设置定位数据
mBaiduMap
.setMyLocationData(locData)
mCurrentLantitude = location
.getLatitude()
mCurrentLongitude = location
.getLongitude()
LatLng point = new LatLng(mCurrentLantitude, mCurrentLongitude)
MapStatusUpdate u = MapStatusUpdateFactory
.newLatLng(point)
mBaiduMap
.animateMapStatus(u)
Toast
.makeText(MainActivity
.this,location
.getAddrStr(),Toast
.LENGTH_SHORT)
.show()
mLocationClient
.stop()
}
}
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
Message msg = new Message()
msg
.obj = location
handler
.sendMessage(msg)
//Receive Location
StringBuffer sb = new StringBuffer(
256)
sb
.append(
"time : ")
sb
.append(location
.getTime())
sb
.append(
"\nerror code : ")
sb
.append(location
.getLocType())
sb
.append(
"\nlatitude : ")
sb
.append(location
.getLatitude())
sb
.append(
"\nlontitude : ")
sb
.append(location
.getLongitude())
sb
.append(
"\nradius : ")
sb
.append(location
.getRadius())
if (location
.getLocType() == BDLocation
.TypeGpsLocation) {// GPS定位结果
sb
.append(
"\nspeed : ")
sb
.append(location
.getSpeed())
sb
.append(
"\nsatellite : ")
sb
.append(location
.getSatelliteNumber())
sb
.append(
"\nheight : ")
sb
.append(location
.getAltitude())
sb
.append(
"\ndirection : ")
sb
.append(location
.getDirection())
sb
.append(
"\naddr : ")
sb
.append(location
.getAddrStr())
sb
.append(
"\ndescribe : ")
sb
.append(
"gps定位成功")
} else if (location
.getLocType() == BDLocation
.TypeNetWorkLocation) {// 网络定位结果
sb
.append(
"\naddr : ")
sb
.append(location
.getAddrStr())
//运营商信息
sb
.append(
"\noperationers : ")
sb
.append(location
.getOperators())
sb
.append(
"\ndescribe : ")
sb
.append(
"网络定位成功")
} else if (location
.getLocType() == BDLocation
.TypeOffLineLocation) {// 离线定位结果
sb
.append(
"\ndescribe : ")
sb
.append(
"离线定位成功,离线定位结果也是有效的")
} else if (location
.getLocType() == BDLocation
.TypeServerError) {
sb
.append(
"\ndescribe : ")
sb
.append(
"服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因")
} else if (location
.getLocType() == BDLocation
.TypeNetWorkException) {
sb
.append(
"\ndescribe : ")
sb
.append(
"网络不同导致定位失败,请检查网络是否通畅")
} else if (location
.getLocType() == BDLocation
.TypeCriteriaException) {
sb
.append(
"\ndescribe : ")
sb
.append(
"无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机")
}
sb
.append(
"\nlocationdescribe : ")
sb
.append(location
.getLocationDescribe())
List<Poi> list = location
.getPoiList()
if (list != null) {
sb
.append(
"\npoilist size = : ")
sb
.append(list
.size())
for (Poi p : list) {
sb
.append(
"\npoi= : ")
sb
.append(p
.getId() +
" " + p
.getName() +
" " + p
.getRank())
}
}
Log
.e(
"BaiduLocationApiDem", sb
.toString())
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-680295.html