android 基于百度地图api获取经纬度
16lz
2022-05-14
一:申请百度地图key
申请key网址:http://dev.baidu.com/wiki/static/imap/key/(没有百度账号先注册账号)
二:下载百度地图android版api
http://dev.baidu.com/wiki/static/imap/files/android/BaiduMapApi_Lib_Android_1.3.3.zip
三:api库的使用:
1.解压后将baidumapapi.jar添加在项目Libraries里,将libBMapApiEngine_v1_3_3.so复制到工程目录下的libs\armeabi(没有这两个文件夹自己在项目根目录下创建)
2.地图、定位、搜索功能都需要BMapManager来管理,BMapManager提供四个接口,init,start,stop,destroy。建议在Application里生成BMapManager对象并初使化,在程序退出时调用destory,在需要使用sdk功能的activity的onCreate里调用start,onDestroy调用stop,或者onResume/onPause分别调用start和stop。
四:创建main.xml文件,注意MapView空间必须是com.baidu.mapapi.MapView
Xml代码- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical">
- <spanstyle="color:#ff0000;"><com.baidu.mapapi.MapView</span>
- android:id="@+id/map_view"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:clickable="true"
- android:enabled="true"/>
- </LinearLayout>
五:新建LocationActivity.java(继承com.baidu.mapapi.MapActivity),如下:
Java代码- packagecom.location.activity;
- importandroid.location.Location;
- importandroid.os.Bundle;
- importandroid.widget.TextView;
- importcom.baidu.mapapi.BMapManager;
- importcom.baidu.mapapi.LocationListener;
- importcom.baidu.mapapi.MKLocationManager;
- importcom.baidu.mapapi.MapActivity;
- /**
- *创建Activity(继承com.baidu.mapapi.MapActivity)
- */
- publicclassLocationActivityextendsMapActivityimplementsLocationListener{
- privateBMapManagermapManager;
- privateMKLocationManagermLocationManager=null;
- privateTextViewlatText;
- privateTextViewlonText;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- latText=(TextView)findViewById(R.id.lat);
- lonText=(TextView)findViewById(R.id.lon);
- //初始化MapActivity
- mapManager=newBMapManager(getApplication());
- //init方法的第一个参数需填入申请的APIKey
- mapManager.init("C66C0501D0280744759A6957C42543AE38F5D540",null);
- super.initMapActivity(mapManager);
- mLocationManager=mapManager.getLocationManager();
- //注册位置更新事件
- mLocationManager.requestLocationUpdates(this);
- //使用GPS定位
- mLocationManager.enableProvider((int)MKLocationManager.MK_GPS_PROVIDER);
- }
- @Override
- protectedbooleanisRouteDisplayed(){
- returnfalse;
- }
- @Override
- protectedvoidonDestroy(){
- if(mapManager!=null){
- mapManager.destroy();
- mapManager=null;
- }
- mLocationManager=null;
- super.onDestroy();
- }
- @Override
- protectedvoidonPause(){
- if(mapManager!=null){
- mapManager.stop();
- }
- super.onPause();
- }
- @Override
- protectedvoidonResume(){
- if(mapManager!=null){
- mapManager.start();
- }
- super.onResume();
- }
- /**
- *根据MyLocationOverlay配置的属性确定是否在地图上显示当前位置
- */
- @Override
- protectedbooleanisLocationDisplayed(){
- returnfalse;
- }
- /**
- *当位置发生变化时触发此方法
- *
- *@paramlocation当前位置
- */
- publicvoidonLocationChanged(Locationlocation){
- if(location!=null){
- //显示定位结果
- lonText.setText("当前经度:"+location.getLongitude());
- latText.setText("当前纬度:"+location.getLatitude());
- }
- }
- }
六:在AndroidManifest.xml中要添加访问网络和启动定位等的几个权限
Xml代码- <!--访问网络的权限-->
- <uses-permissionandroid:name="android.permission.INTERNET"/>
- <!--访问精确位置的权限-->
- <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/>
- <!--访问网络状态的权限-->
- <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
- <!--访问WIFI网络状态的权限-->
- <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
- <!--改变WIFI网络状态的权限-->
- <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/>
- <!--读写存储卡的权限-->
- <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- <!--读取电话状态的权限-->
- <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
七:运行效果如下图:
更多相关文章
- Android默认给予USB读写权限,去掉授权对话框
- android 获取连接WiFi的名称SSID
- Android(安卓)3.0 访问WebService 出现 android.os.NetworkOnMai
- Android静默安装实现
- 3.3详解四种基本布局
- Android(手机)连接电脑本地服务器(flask)
- Android引用百度定位API第三方组件后导致其它.so文件无法正常加
- Android(安卓)7.0 后拍照和相册选择
- Android(安卓)通过代码实现控制数据网络的开关(仅适用于5.0以上)