使用百度地图SDK实现定位功能,定位你当前的位置
来源:互联网 发布:java设计模式书籍 知乎 编辑:程序博客网 时间:2024/05/18 07:50
1、首先需要下载百度地图官方SDK
官方文档: http://developer.baidu.com/map/sdkandev-6.htm#.E7.AE.80.E4.BB.8B3
2、将sdk中相关文件复制到对应的目录下(所有的.jar文件以及整个armeabi文件夹复制到工程的libs目录下)
3、接着你就可以使用百度地图所有相关功能了
---下面介绍使用百度地图SDK实现定位功能
首先在清单文件中添加权限和appkey
---权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.READ_LOGS" />
---appkey
将你在百度开发平台上申请的key替换即可,注意在application中添加,和activity同级
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="申请的appkey" />
布局xml文件中代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.test.MainActivity" > <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginTop="80dip" android:background="#D000" android:minWidth="100dip" android:orientation="vertical" android:padding="2dp" > <RadioGroup android:id="@+id/radioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="定位icon" > <RadioButton android:id="@+id/defaulticon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="默认图标" > </RadioButton> <RadioButton android:id="@+id/customicon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定义图标" > </RadioButton> </RadioGroup> <Button android:id="@+id/poisearch" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="poiSearch" android:text="周边检索"/> </LinearLayout> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="25dp" android:layout_marginTop="10dip" /></RelativeLayout>
Activity中的代码
import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.RadioGroup;import android.widget.Toast;import android.widget.RadioGroup.OnCheckedChangeListener;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationConfiguration;import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.model.LatLng;public class MainActivity extends Activity {// 定位相关LocationClient mLocClient;public MyLocationListenner myListener = new MyLocationListenner();private LocationMode mCurrentMode;BitmapDescriptor mCurrentMarker;MapView mMapView;BaiduMap mBaiduMap;// UI相关OnCheckedChangeListener radioButtonListener;Button requestLocButton;boolean isFirstLoc = true;// 是否首次定位 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); requestLocButton = (Button) findViewById(R.id.button1); mCurrentMode = LocationMode.NORMAL; requestLocButton.setText("普通"); OnClickListener btnClickListener = new OnClickListener() { public void onClick(View v) { switch (mCurrentMode) { case NORMAL: requestLocButton.setText("跟随"); mCurrentMode = LocationMode.FOLLOWING; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); break; case COMPASS: requestLocButton.setText("普通"); mCurrentMode = LocationMode.NORMAL; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); break; case FOLLOWING: requestLocButton.setText("罗盘"); mCurrentMode = LocationMode.COMPASS; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); break; default: break; } } }; requestLocButton.setOnClickListener(btnClickListener);RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup);radioButtonListener = new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {if (checkedId == R.id.defaulticon) {// 传入null则,恢复默认图标mCurrentMarker = null;mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, null));}if (checkedId == R.id.customicon) {// 修改为自定义markermCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker));}}};group.setOnCheckedChangeListener(radioButtonListener);// 地图初始化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"); // 设置坐标类型option.setScanSpan(1000);mLocClient.setLocOption(option);mLocClient.start();}/** * 定位SDK监听函数 */public class MyLocationListenner implements BDLocationListener { @Override public 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() {mMapView.onPause();super.onPause();}@Overrideprotected void onResume() {mMapView.onResume();super.onResume();}@Overrideprotected void onDestroy() {// 退出时销毁定位mLocClient.stop();// 关闭定位图层mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;super.onDestroy();}}-----<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.test.MainActivity" > <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginTop="80dip" android:background="#D000" android:minWidth="100dip" android:orientation="vertical" android:padding="2dp" > <RadioGroup android:id="@+id/radioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="定位icon" > <RadioButton android:id="@+id/defaulticon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="默认图标" > </RadioButton> <RadioButton android:id="@+id/customicon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定义图标" > </RadioButton> </RadioGroup> </LinearLayout> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="25dp" android:layout_marginTop="10dip" /></RelativeLayout>
这样就实现定位当前位置啦!!!
0 0
- 使用百度地图SDK实现定位功能,定位你当前的位置
- 使用百度地图sdk实现定位功能
- 百度地图api--定位当前的位置
- 使用百度地图api实现定位及选择位置功能
- 使用百度地图api实现定位及选择位置功能
- Android:使用百度地图SDK定位当前具体位置(类似QQ发表说说的选择地点功能)
- ndroid:使用百度地图SDK定位当前具体位置(类似QQ发表说说的选择地点功能)
- Android使用百度地图SDK实现定位功能
- Android使用百度地图SDK实现定位功能
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
- 城市定位,利用百度地图API定位到你当前的位置
- 百度地图最新版本sdk使用系列(五)-定位功能的实现
- 使用百度地图api实现定位功能。
- 基于百度地图定位SDK实现定位
- Android--百度地图定位功能的具体实现<百度地图SDK版本 v3.7.3>
- 百度定位SDK实现获取当前经纬度及位置
- 百度定位SDK实现获取当前经纬度及位置
- 遍历HashMap的四种方法
- 【杭电】 1001 Sum Problem
- 现代化Web的微服务架构最佳实践全景
- 深度增强学习方向论文整理
- [Android Studio 权威教程]打包、生成jks密钥、签名Apk、多渠道打包
- 使用百度地图SDK实现定位功能,定位你当前的位置
- ndk之AAssetManager
- 使用润乾参数模板后如何对参数进行二次处理
- Linux命令--sysctl
- Dapper,大规模分布式系统的跟踪系统
- 面试总结(人丑要多读书)
- Spinner下拉框遮挡Spinner显示框解决办法
- 微信小程序中rpx与rem单位使用
- 四种数据库随机获取10条数据的方法