Android手机百度地图开发步骤
来源:互联网 发布:2k17樱木花道脸部数据 编辑:程序博客网 时间:2024/04/27 02:32
关于百度地图的开发,百度地图API有很详细的开发资料,所以本篇文章不在于写开发技术,而在于开发步骤
1.导入库文件
我们想要开发百度地图,那么首先需要导入库文件(这些库文件可以从这里下载)
将liblocSDK4d.so文件拷贝到libs/armeabi目录下。
将locSDK4.2.jar文件拷贝到工程的libs目录下。
在工程属性->Java Build Path->Libraries中选择“AddJARs”,
选定locSDK4.2.jar,确定后返回。这样您就可以在程序中使用百度定位SDK了。
2.设置AndroidManifest.xml
在application标签中声明service组件,每个app拥有自己单独的定位service
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service>
3.声明使用权限
<permission android:name="android.permission.BAIDU_LOCATION_SERVICE" > </permission> <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" > </uses-permission> <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" > </uses-permission> <!-- <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission> --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > </uses-permission> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK" > </uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_GPS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" /> <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? --> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.CAMERA" > </uses-permission> <uses-permission android:name="android.permission.RECORD_AUDIO" > </uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" > </uses-permission> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 来电消音 --> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" > </uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
4.设置AcessKey
使用SDK4.2需要在Mainfest.xml设置Accesskey,设置有误会引起定位和地理围栏服务不能正常使用,必须进行Accesskey的正确设置。
设置AccessKey,在application标签中加入备注:value = "key"的key是开发者申请的key,关于Key的申请参考开发者key
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="key" />
5.使用前初始化
import com.baidu.mapapi.SDKInitializer;import android.app.Application;public class DemoApplication extends Application{@Overridepublic void onCreate(){super.onCreate();// 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContextSDKInitializer.initialize(this);}}同时在Mainfest.xml的Application加入如下一行
android:name="com.phonemap.DemoApplication"
6.设置显示界面
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /></LinearLayout>
7.实现定位操作
import java.util.Timer;import java.util.TimerTask;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.CircleOptions;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.Marker;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.map.OverlayOptions;import com.baidu.mapapi.map.Stroke;import com.baidu.mapapi.map.TextOptions;import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener;import com.baidu.mapapi.model.LatLng;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.widget.Toast;public class MainActivity extends Activity{private MapView mMapView;// 定位相关LocationClient mLocClient;public MyLocationListenner myListener = new MyLocationListenner();BaiduMap mBaiduMap;boolean isFirstLoc = true;// 是否首次定位private Marker mMarker;BitmapDescriptor bd = BitmapDescriptorFactory.fromResource(R.drawable.icon_gcoding);BitmapDescriptor bdGround = BitmapDescriptorFactory.fromResource(R.drawable.ground_overlay);public final double tbox_latitude = 30.57;public final double tbox_longitude = 114.02;static final int REFRESH = 0;//定时器设置Timer timer = new Timer();TimerTask task = new TimerTask(){@Overridepublic void run(){Message message = new Message();message.what = REFRESH;handler.sendMessage(message);}};Handler handler = new Handler(){public void handleMessage(Message msg){switch (msg.what){case REFRESH:RefreshData();break;default:break;}}};public Thread myThread = new Thread(new Runnable(){@Overridepublic void run(){}});public void RefreshData(){}@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 //SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.tbox_location);// 初始化地图mMapView = (MapView) findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap();// 开启定位图层mBaiduMap.setMyLocationEnabled(true);// 定位初始化mLocClient = new LocationClient(this);mLocClient.registerLocationListener(myListener);LocationClientOption option = new LocationClientOption();option.setOpenGps(true);// 打开gpsoption.setCoorType("bd09ll"); // 设置坐标类型//国测局经纬度坐标系gcj02、百度墨卡托坐标系bd09、 百度经纬度坐标系bd09lloption.setScanSpan(1000);mLocClient.setLocOption(option);mLocClient.start();mBaiduMap.setOnMarkerClickListener(new OnMarkerClickListener() {public boolean onMarkerClick(final Marker marker) {if (marker == mMarker) {Toast.makeText(TboxActivity.this, "TBOX位置信息", Toast.LENGTH_LONG).show();}return true;}});//开启定时器timer.schedule(task,1000,1000);//开启线程myThread.start();}/** * 定位SDK监听函数 */public class MyLocationListenner implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {// map view 销毁后不在处理新接收的位置if (location == null || mMapView == null)return;MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(100).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);if (isFirstLoc) {isFirstLoc = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);mBaiduMap.animateMapStatus(u);}}public void onReceivePoi(BDLocation poiLocation) {}}@Overrideprotected void onPause() {super.onPause();// activity 暂停时同时暂停地图控件mMapView.onPause();}@Overrideprotected void onResume() {super.onResume();// activity 恢复时同时恢复地图控件mMapView.onResume();}@Overrideprotected void onDestroy() {super.onDestroy();// 退出时销毁定位mLocClient.stop();// 关闭定位图层mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;}}
8.一个简易的定位操作就实现了
效果如图
ok,这样一个简单的定位功能就做好了。
0 0
- Android手机百度地图开发步骤
- android手机百度地图开发
- 百度地图开发步骤
- Android手机百度地图
- 关于百度地图的应用android开发步骤
- Android百度地图开发API key申请详细步骤
- android 开发百度地图
- Android百度地图开发
- Android百度地图开发
- 百度地图 Android开发
- Android百度地图开发
- android百度地图开发
- android开发百度地图
- Android百度地图开发
- Android开发百度地图
- 百度地图 android 开发
- android-百度地图-手机显示地图
- 百度地图开发最基本步骤
- HDU 2090 算菜价
- 获取本地时间和格林威治时间一点用法
- 对工具类的思考
- poj 2186 (强连通缩点传递关系)
- 谈谈云计算两大初创企业docker和CoreOS
- Android手机百度地图开发步骤
- Android学习笔记——Activity的启动和创建
- 求满足某种条件的子串问题- 滑动窗口法
- javax.servlet.FilterConfig翻译
- jquery 获取网页地址参数值
- 第十四周项目三
- 大数据成为监控腐败的第三只眼
- Android 性能分析案例
- Program in Lua中图算法的改进(打印所有图路径)