android 使用百度api怎么快速定位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 使用百度api怎么快速定位相关的知识,希望对你有一定的参考价值。

  在下载页面下载最新的库文件。将liblocSDK2.4.so文件拷贝到libs/armeabi目录下。将locSDK2.4.jar文件拷贝到工程根目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定locSDK2.4.jar,确定后返回。这样您就可以在程序中使用百度定位API了。

  设置androidManifest.xml
  为区分2.3版本service,需要将manifest file中的 intent filter声明为com.baidu.location.service_v2.4 在application标签中声明service组件

  <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" android:permission="android.permission.BAIDU_LOCATION_SERVICE"> <intent-filter> <action android:name="com.baidu.location.service_v2.4"></action> </intent-filter></service>声明使用权限

  <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_COARSE_LOCATION"></uses-permission><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission><uses-permission android:name="android.permission.READ_LOGS"></uses-permission>import相关类

  import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.location.BDNotifyListener;//假如用到位置提醒功能,需要import该类功能类的使用
  初始化LocationClient类
  此处需要注意:LocationClient类必须在主线程中声明。需要Context类型的参数。

  public LocationClient mLocationClient = null;public BDLocationListener myListener = new MyLocationListener(); public void onCreate() mLocationClient = new LocationClient(this); //声明LocationClient类 mLocationClient.registerLocationListener( myListener ); //注册监听函数实现BDLocationListener接口
  BDLocationListener接口有2个方法需要实现:
  1.接收异步返回的定位结果,参数是BDLocation类型参数。
  2.接收异步返回的POI查询结果,参数是BDLocation类型参数。

  public class MyLocationListenner implements BDLocationListener @Override public void onReceiveLocation(BDLocation location) if (location == null) return ; 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) sb.append("\\nspeed : "); sb.append(location.getSpeed()); sb.append("\\nsatellite : "); sb.append(location.getSatelliteNumber()); else if (location.getLocType() == BDLocation.TypeNetWorkLocation) sb.append("\\naddr : "); sb.append(location.getAddrStr()); logMsg(sb.toString()); public void onReceivePoi(BDLocation poiLocation) if (poiLocation == null) return ; StringBuffer sb = new StringBuffer(256); sb.append("Poi time : "); sb.append(poiLocation.getTime()); sb.append("\\nerror code : "); sb.append(poiLocation.getLocType()); sb.append("\\nlatitude : "); sb.append(poiLocation.getLatitude()); sb.append("\\nlontitude : "); sb.append(poiLocation.getLongitude()); sb.append("\\nradius : "); sb.append(poiLocation.getRadius()); if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation) sb.append("\\naddr : "); sb.append(poiLocation.getAddrStr()); if(poiLocation.hasPoi()) sb.append("\\nPoi:"); sb.append(poiLocation.getPoi()); else sb.append("noPoi information"); logMsg(sb.toString()); 设置参数
  设置定位参数包括:定位模式(单次定位,定时定位),返回坐标类型,是否打开GPS等等。eg:

  LocationClientOption option = new LocationClientOption();option.setOpenGps(true);option.setAddrType("detail");option.setCoorType("gcj02");option.setScanSpan(5000);option.disableCache(true);//禁止启用缓存定位option.setPoiNumber(5); //最多返回POI个数 option.setPoiDistance(1000); //poi查询距离 option.setPoiExtraInfo(true); //是否需要POI的电话和地址等详细信息 mLocClient.setLocOption(option);发起定位请求
  发起定位请求。请求过程是异步的,定位结果在上面的监听函数onReceiveLocation中获取。

  if (mLocClient != null && mLocClient.isStarted()) mLocClient.requestLocation();else Log.d("LocSDK_2.0_Demo1", "locClient is null or not started");发起POI查询请求
  发起POI查询请求。请求过程是异步的,定位结果在上面的监听函数onReceivePoi中获取。

  if (mLocClient != null && mLocClient.isStarted()) mLocClient.requestPoi();位置提醒使用
  位置提醒最多提醒3次,3次过后将不再提醒。 假如需要再次提醒,或者要修改提醒点坐标,都可通过函数SetNotifyLocation()来实现。

  //位置提醒相关代码mNotifyer = new NotifyLister();mNotifyer.SetNotifyLocation(42.03249652949337,113.3129895882556,3000,"gps");//4个参数代表要位置提醒的点的坐标,具体含义依次为:纬度,经度,距离范围,坐标系类型(gcj02,gps,bd09,bd09ll)mLocationClient.registerNotify(mNotifyer);//注册位置提醒监听事件后,可以通过SetNotifyLocation 来修改位置提醒设置,修改后立刻生效。
  //BDNotifyListner实现public class NotifyLister extends BDNotifyListener public void onNotify(BDLocation mlocation, float distance) mVibrator01.vibrate(1000);//振动提醒已到设定位置附近
  //取消位置提醒mLocationClient.removeNotifyEvent(mNotifyer);
参考技术A 下载百度地图的APP,然后安装。
此时手机中有已经安装好的百度地图软件。打开百度地图软件,即可看到自己所在的位置。
提示,下载百度地图需要手机流量,建议在有wifi情况下下载使用。
参考技术B 看到这回复,吓尿了,该不会直接从官方文档里面烤的吧?我只知道百度集成了定位API,下载实例代码demo 也不会觉得慢,究竟你要多快速,那就不清楚咯本回答被提问者和网友采纳 参考技术C 你自己考的

微信小程序怎么破定位

微信小程序支持地理位置定位,可以通过获取用户所在地理位置,来实现小程序相关功能。你可以使用微信小程序API(wx.getLocation)来获取用户的地理位置,然后再根据获取的经纬度,通过百度地图提供的api调取服务,来获取用户具体地址信息。 参考技术A 1、使用微信小程序的定位功能,可以在开发者工具中调试。
2、使用百度地图API来实现定位功能,需要注册一个开发者帐号并创建一个应用,然后将相关代码添加到小程序中即可。
3、使用高德地图API来实现定位功能,也是上述步骤的重复。

以上是关于android 使用百度api怎么快速定位的主要内容,如果未能解决你的问题,请参考以下文章

Android 按照步骤接入百度地图API,定位显示不了解决办法

怎么在android百度地图通过经纬度来定位并且显示出地图位置

android 百度地图系列之地图初始化及定位

我的Android开发之路——百度地图开源工具获取定位信息

怎么设置高德地图位置

Android百度地图API集成二《定位》