百度地图的一些方法及常见问题
来源:互联网 发布:火车网络票实名认证 编辑:程序博客网 时间:2024/05/21 14:43
注意事项:
一、①当打开百度demo不能定位时,考虑是否更换了key。
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="Mbg6oV5kPFG2CcYU3q1zFV7jePZlcGOz" />
②自定义一个MyApplication继承自Application,在onCreate()方法中初始化全局SDKInitializer.initialize(getApplicationContext());
③尤其需要在mainfest中添加权限
<!-- 这个权限用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!-- 这个权限用于访问GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 --> <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" /> <!-- SD卡读取权限,用户写入离线定位数据 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> <!-- 允许应用读取低级别的系统日志文件 --> <uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service>
1、计算两点间的距离
public boolean isLocation(LatLng latLng, LatLng latLng2, Integer r) {double R = 6371;// 地球半径double distance = 0.0;double dLat = Double.valueOf(new BigDecimal(String.valueOf((latLng.latitude - latLng2.latitude))).multiply(new BigDecimal(String.valueOf(Math.PI))).divide(new BigDecimal(String.valueOf(180)), 10,BigDecimal.ROUND_HALF_EVEN).toString());double dLon = Double.valueOf(new BigDecimal(String.valueOf((latLng.longitude - latLng2.longitude))).multiply(new BigDecimal(String.valueOf(Math.PI))).divide(new BigDecimal(String.valueOf(180)), 10,BigDecimal.ROUND_HALF_EVEN).toString());double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)+ Math.cos(latLng.latitude * Math.PI / 180)* Math.cos(latLng2.latitude * Math.PI / 180)* Math.sin(dLon / 2) * Math.sin(dLon / 2);distance = (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))) * R * 1000;System.out.println(distance);// distance两个坐标点之间的直线距离if (distance > Double.valueOf(String.valueOf(r))) {//r为设置的半径return true;}return false;}2、调用外部百度地图导航
public void startNavi(LatLng pt1, LatLng pt2) {// 构建导航参数/** * endName(java.lang.String endName):导航终点名称 endPoint(LatLng * endPoint):导航终点, 百度经纬度坐标 startName(java.lang.String startName):导航起点名称 * startPoint(LatLng startPoint):导航起点, 百度经纬度坐标 * */NaviParaOption para = new NaviParaOption().startPoint(pt1).endPoint(pt2).startName("天安门").endName("百度大厦");try {/** * openBaiduMapNavi(NaviParaOption para, Context context) 调起百度地图导航页面 * */BaiduMapNavigation.openBaiduMapNavi(para, getActivity());} catch (BaiduMapAppNotSupportNaviException e) {e.printStackTrace();showConfirmTip("您尚未安装百度地图app或app版本过低,点击确认安装?",new OnCustomDialogConfirmListener() {@Overridepublic void onClick() {// TODO Auto-generated method stubOpenClientUtil.getLatestBaiduMapApp(getActivity());}}, new OnCustomDialogConfirmListener() {@Overridepublic void onClick() {// TODO Auto-generated method stub}});}}
3、打开实时路况 / 打开热力地图
case R.id.traffic_map_btn:if (!mBaiduMap.isTrafficEnabled()) {mBaiduMap.setTrafficEnabled(true);trafficMapBtn.setText("关闭实时路况");} else {mBaiduMap.setTrafficEnabled(false);trafficMapBtn.setText("打开实时路况");}break;case R.id.heat_map_btn:if (!mBaiduMap.isBaiduHeatMapEnabled()) {mBaiduMap.setBaiduHeatMapEnabled(true);headMapBtn.setText("关闭热力图");} else {mBaiduMap.setBaiduHeatMapEnabled(false);headMapBtn.setText("打开热力图");}break;
4、反地理编码得到地址信息,需要定义一个全局变量,在该方法里赋值即可。
/** * 反地理编码得到地址信息 * * @return */private void reverseGeoCode(LatLng latLng) {// 创建地理编码检索实例GeoCoder geoCoder = GeoCoder.newInstance();geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(latLng));geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {@Overridepublic void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {// TODO Auto-generated method stubif (result == null|| result.error != SearchResult.ERRORNO.NO_ERROR) {// 没有检测到结果Toast.makeText(getActivity(), "抱歉,未能找到结果",Toast.LENGTH_LONG).show();}Toast.makeText(getActivity(), "位置:" + result.getAddress(),Toast.LENGTH_LONG).show();cenpt1Addr = result.getAddress();location.setText(cenpt1Addr);Log.e("ShiftFragment", cenpt1Addr);}@Overridepublic void onGetGeoCodeResult(GeoCodeResult result) {// TODO Auto-generated method stubif (result == null|| result.error != SearchResult.ERRORNO.NO_ERROR) {// 没有检测到结果}}});//geoCoder.destroy();// 释放地理编码检索实例 ,不知道为什么有这句话地址就解析不出来}5、 根据经纬度获得车辆位置信息,给期设置定位图标
/** * 根据经纬度获得车辆位置信息 * * @param cenpt1 点1 * @param */
private Marker mMarkerB;private Marker mMarkerC;BitmapDescriptor bdA = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);BitmapDescriptor bdB = BitmapDescriptorFactory.fromResource(R.drawable.gzcbus);BitmapDescriptor bdC = BitmapDescriptorFactory.fromResource(R.drawable.trailerbusy);public void initOverlay() {if(cenpt1!=null && cenpt2!=null){MarkerOptions ooB = new MarkerOptions().position(cenpt1).icon(bdB);mMarkerB = (Marker) (mBaiduMap.addOverlay(ooB));MarkerOptions ooC = new MarkerOptions().position(cenpt2).icon(bdC);mMarkerC = (Marker) (mBaiduMap.addOverlay(ooC));}else{linear1.setVisibility(View.GONE);linear2.setVisibility(View.GONE);return;}}
0 0
- 百度地图的一些方法及常见问题
- android studio 配置百度地图SDK 的一些常见问题
- 百度地图的一些疑问
- 百度地图API 一些简单方法
- 【c#】Form调用百度地图api攻略及常见问题
- 在网页中插入百度地图地址 及 解决百度地图中心偏移到左上角 的方法
- 百度地图API的一些应用
- 百度地图云检索的一些问题
- 关于百度地图的一些问题总结
- 百度地图API使用的一些注意事项
- 百度地图遇到的一些问题
- 百度地图周边检索功能的一些设置及自定义marker点
- 关于百度地图(三)添加覆盖物自定义布局及遇到的一些bug解决方法
- 百度地图API应用以及对地图的一些操作
- 百度地图的集成及使用
- 一个重要的百度地图API方法
- 百度地图官方的定位和方法
- 学习使用百度地图的正确方法
- git push 免密码,去除每次输入密码
- 计算机组成原理(1)实验3
- MySQL查看、创建和删除索引的方法
- weblogic linux 静默安装
- 程序员,别了校园入了江湖
- 百度地图的一些方法及常见问题
- Android安全加密:对称加密
- Kali 2.0 升级到 Kali Rolling
- RX响应式编程学习
- textView绘制圆
- 解决与”appstore审核被拒“的相关问题
- android AIDL : 你真的理解AIDL中的in,out,inout么?
- super和this?
- tomact结合nginx使用