android开发百度地图定位功能实现.docx
《android开发百度地图定位功能实现.docx》由会员分享,可在线阅读,更多相关《android开发百度地图定位功能实现.docx(17页珍藏版)》请在冰豆网上搜索。
![android开发百度地图定位功能实现.docx](https://file1.bdocx.com/fileroot1/2023-1/2/f134f35e-28de-4914-b827-bc7fa1e59d3d/f134f35e-28de-4914-b827-bc7fa1e59d3d1.gif)
android开发XX地图定位功能实现
androidXX地图定位功能实现
001
package com.example.foreveross.office;
002
003
import com.baidu.location.BDLocation;
004
import com.baidu.location.BDLocationListener;
005
import com.baidu.location.LocationClient;
006
import com.baidu.location.LocationClientOption;
007
import com.baidu.mapapi.BMapManager;
008
import com.baidu.mapapi.map.LocationData;
009
import com.baidu.mapapi.map.MKMapViewListener;
010
import com.baidu.mapapi.map.MapController;
011
import com.baidu.mapapi.map.MapPoi;
012
import com.baidu.mapapi.map.MapView;
013
import com.baidu.mapapi.map.MyLocationOverlay;
014
import api.basestruct.GeoPoint;
015
import com.example.wenandroid.R;
016
017
import android.app.Activity;
018
import android.content.res.Configuration;
019
import android.location.Location;
020
import android.location.LocationListener;
021
import android.location.LocationManager;
022
import android.os.Bundle;
023
import android.view.Menu;
024
import android.widget.FrameLayout;
025
import android.widget.Toast;
026
027
public class MapActivity extends Activity{
028
BMapManagermBMapMan= null;
029
MapViewmMapView= null;
030
MapControllermMapController;
031
MyLocationOverlaymLocationOverlay;
032
LocationDatalocData= null;
033
LocationClientmLocClient;
034
public MyLocationListennermyListener= new MyLocationListenner();
035
036
@Override
037
protected void onCreate(BundlesavedInstanceState){
038
super.onCreate(savedInstanceState);
039
mBMapMan= new BMapManager(getApplication());
040
mBMapMan.init("BB3299207a600b8a035b76982adde60f", null);
041
setContentView(R.layout.activity_main);
042
mMapView=(MapView)findViewById(R.id.bmapsView);
043
mMapView.setBuiltInZoomControls(true);
044
//设置启用内置的缩放控件
045
mMapController=mMapView.getController();
046
mMapController.setZoom(12);//设置地图zoom级别
047
048
//定位初始化
049
mLocClient= new LocationClient(this);
050
locData= new LocationData();
051
mLocClient.registerLocationListener(myListener);
052
LocationClientOptionoption= new LocationClientOption();
053
option.setOpenGps(true);//打开gps
054
option.setCoorType("bd09ll"); //设置坐标类型
055
option.setScanSpan(5000);
056
mLocClient.setLocOption(option);
057
mLocClient.start();
058
059
//定位图层初始化
060
mLocationOverlay= new MyLocationOverlay(mMapView);
061
//设置定位数据
062
mLocationOverlay.setData(locData);
063
//添加定位图层
064
mMapView.getOverlays().add(mLocationOverlay);
065
mLocationOverlay.enableCompass();
066
//修改定位数据后刷新图层生效
067
mMapView.refresh();
068
069
}
070
//实现监听器
071
public class MyLocationListenner implements BDLocationListener{
072
073
@Override
074
public void onReceiveLocation(BDLocationlocation){
075
if (location== null)
076
return ;
077
078
locData.latitude=location.getLatitude();
079
locData.longitude=location.getLongitude();
080
//如果不显示定位精度圈,将accuracy赋值为0即可
081
locData.accuracy=location.getRadius();
082
locData.direction=location.getDerect();
083
//更新定位数据
084
mLocationOverlay.setData(locData);
085
//更新图层数据执行刷新后生效
086
mMapView.refresh();
087
//是手动触发请求或首次定位时,移动到定位点
088
089
mMapController.animateTo(newGeoPoint((int)(locData.latitude*1e6),(int)(locData.longitude* 1e6)));
090
}
091
092
public void onReceivePoi(BDLocationpoiLocation){
093
if (poiLocation== null){
094
return ;
095
}
096
}
097
}
098
099
@Override
100
protected void onDestroy(){
101
//TODOAuto-generatedmethodstub
102
mMapView.destroy();
103
if (mBMapMan!
= null){
104
mBMapMan.destroy();
105
mBMapMan= null;
106
}
107
super.onDestroy();
108
}
109
110
@Override
111
protected void onPause(){
112
//TODOAuto-generatedmethodstub
113
mMapView.onPause();
114
if (mBMapMan!
= null){
115
mBMapMan.stop();
116
}
117
super.onPause();
118
}
119
120
@Override
121
protected void onResume(){
122
//获取位置管理者,视图根据位置监听更新位置
123
mLocationOverlay.getMyLocation();
124
mLocationOverlay.enableCompass();
125
mMapView.onResume();
126
if (mBMapMan!
= null){
127
mBMapMan.start();
128
}
129
super.onResume();
130
}
131
132
}
需要用到的jar包大家可以到XX地图api网站上下载。
主要依赖于下列包:
manifest.xml配置如下:
01
xml version="1.0" encoding="utf-8"?
>
02
android="
03
package="com.example.wenandroid"
04
android:
versionCode="1"
05
android:
versionName="1.0" >
06
07
largeScreens="true"
08
android:
normalScreens="true"
09
android:
smallScreens="true"
10
android:
resizeable="true"
11
android:
anyDensity="true">
12
13
14
15
android:
minSdkVersion="3" />
16
17
name="android.permission.BAIDU_LOCATION_SERVICE">
18
name="android.permission.ACCESS_COARSE_LOCATION">
19
name="android.permission.ACCESS_FINE_LOCATION">
20
name="android.permission.ACCESS_WIFI_STATE">
21
name="android.permission.ACCESS_NETWORK_STATE">
22
name="android.permission.CHANGE_WIFI_STATE">
23
name="android.permission.READ_PHONE_STATE">
24
name="android.permission.WRITE_EXTERNAL_STORAGE">
25
name="android.permission.INTERNET" />
26
name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS">
27
name="android.permission.READ_LOGS">
28
name="android.permission.VIBRATE">
29
name="android.permission.WRITE_SETTINGS">
30
name="android.permission.CALL_PHONE">
31
name="android.permission.BAIDU_LOCATION_SERVICE">
32
name="android.permission.ACCESS_MOCK_LOCATION">
33
name="android.permission.ACCESS_GPS">
34
--授予设置手机屏幕权限 -->
35
name="android.permission.SET_WALLPAPER"/>
36
37
38
android:
allowBackup="true"
39
android:
icon="@drawable/first"
40
android:
label="@string/app_name"
41
android:
theme="@style/AppTheme" >
42
43
android:
name="com.example.foreveross.office.MapActivity"
44
android:
label="@string/app_name" >
45
46
name="android.intent.action.MAIN" />
47
48
name="android.intent.category.LAUNCHER" />
49
50
51
52
53
name="com.baidu.location.f" android:
enabled="true"
54
android:
process=":
remote">
55
--
56
name="com.baidu.location.service_v2.9">
57
-->
58
59
60
界面只有一个mapview地图控件,在此列出activity_main.xml:
01
xml version="1.0" encoding="utf-8"?
>
02
android="
03
android:
layout_width="fill_parent"
04
android:
layout_height="fill_parent"
05
android:
orientation="vertical"
06
>
07
08
id="@+id/bmapsView"
09
android:
layout_width="fill_parent"
10
android:
layout_height="fill_parent"
11
android:
clickable="true" />
12
>
13