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

  书接上回 ↑

  基础地图请查看Android百度地图API集成一《基础地图》: 地址http://www.cnblogs.com/dhr125/p/5969980.html

1.在Application标签中声明SERVICE组件

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>

2.声明使用权限

 1 <!-- 这个权限用于进行网络定位-->
 2 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
 3 <!-- 这个权限用于访问GPS定位-->
 4 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
 5 <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
 6 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
 7 <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
 8 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
 9 <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
10 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
11 <!-- 用于读取手机当前的状态-->
12 <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
13 <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
14 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
15 <!-- 访问网络,网络定位需要上网-->
16 <uses-permission android:name="android.permission.INTERNET" />
17 <!-- SD卡读取权限,用户写入离线定位数据-->
18 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

3.到解压出的实例代码出找到LocationDemo.java,复制代码后如下

 1 package com.example.baidumap;
 2
 3 import android.os.Bundle;
 4 import android.support.v7.app.AppCompatActivity;
 5
 6 import com.baidu.location.BDLocation;
 7 import com.baidu.location.BDLocationListener;
 8 import com.baidu.location.LocationClient;
 9 import com.baidu.location.LocationClientOption;
10 import com.baidu.mapapi.SDKInitializer;
11 import com.baidu.mapapi.map.BaiduMap;
12 import com.baidu.mapapi.map.MapStatus;
13 import com.baidu.mapapi.map.MapStatusUpdateFactory;
14 import com.baidu.mapapi.map.MapView;
15 import com.baidu.mapapi.map.MyLocationData;
16 import com.baidu.mapapi.model.LatLng;
17
18 public class MainActivity extends AppCompatActivity {
19
20     private MapView mMapView;
21     private BaiduMap mBaiduMap;
22     private LocationClient mLocClient;
23     public MyLocationListenner myListener = new MyLocationListenner();
24     boolean isFirstLoc = true; // 是否首次定位
25
26
27     @Override
28     protected void onCreate(Bundle savedInstanceState) {
29         super.onCreate(savedInstanceState);
30         //在使用SDK各组件之前初始化context信息,传入ApplicationContext
31         //注意该方法要再setContentView方法之前实现
32         SDKInitializer.initialize(getApplicationContext());
33         setContentView(R.layout.activity_main);
34         //获取地图控件引用
35         mMapView = (MapView) findViewById(R.id.bmapView);

/************************************ 从这里开始是在locationdemo.java中复制的,然后根据报错,缺什么补什么   **************************************************************/
36         mBaiduMap = mMapView.getMap();
37         // 开启定位图层
38         mBaiduMap.setMyLocationEnabled(true);
39         // 定位初始化
40         mLocClient = new LocationClient(this);
41         mLocClient.registerLocationListener(myListener);
42         LocationClientOption option = new LocationClientOption();
43         option.setOpenGps(true); // 打开gps
44         option.setCoorType("bd09ll"); // 设置坐标类型
45         option.setScanSpan(1000);
46         mLocClient.setLocOption(option);
47         mLocClient.start();/****************************************************************************************************/
48     }
49
50     /**
51      * 定位SDK监听函数
52      */
53     public class MyLocationListenner implements BDLocationListener {
54
55         @Override
56         public void onReceiveLocation(BDLocation location) {
57             // map view 销毁后不在处理新接收的位置
58             if (location == null || mMapView == null) {
59                 return;
60             }
61             MyLocationData locData = new MyLocationData.Builder()
62                     .accuracy(location.getRadius())
63                     // 此处设置开发者获取到的方向信息,顺时针0-360
64                     .direction(100).latitude(location.getLatitude())
65                     .longitude(location.getLongitude()).build();
66             mBaiduMap.setMyLocationData(locData);
67             if (isFirstLoc) {
68                 isFirstLoc = false;
69                 LatLng ll = new LatLng(location.getLatitude(),
70                         location.getLongitude());
71                 MapStatus.Builder builder = new MapStatus.Builder();
72                 builder.target(ll).zoom(18.0f);
73                 mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
74             }
75         }
76
77         public void onReceivePoi(BDLocation poiLocation) {
78         }
79     }
80
81     @Override
82     protected void onDestroy() {
83         super.onDestroy();
84         //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
85         mMapView.onDestroy();
86     }
87     @Override
88     protected void onResume() {
89         super.onResume();
90         //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
91         mMapView.onResume();
92     }
93     @Override
94     protected void onPause() {
95         super.onPause();
96         //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
97         mMapView.onPause();
98     }
99 }

  以上,运行代码即可在地图上显示出你的当前位置

  注意:如果,运行代码出现的是定位到一片蓝色的区域,当你将地图缩小后,会发现定位在海洋里或其他地方

     1.检查各个步骤有没有错误,尤其是jar包,有没有引用

     2.如果是模拟器,那就换成真机测试

     3.如果是真机,检查手机系统是否是6.0及以上,如果是:在build.gradle中,将targetSdkVersion 改为22

时间: 2024-10-20 03:11:34

Android百度地图API集成二《定位》的相关文章

Android百度地图API集成三《搜索》

书接上回↑ 一.基础地图界面地址:http://www.cnblogs.com/dhr125/p/5969980.html 二.地图定位地址:http://www.cnblogs.com/dhr125/p/5970118.html 搜索功能 1.在xml文件中加入布局 1 <LinearLayout 2 android:layout_width="match_parent" 3 android:layout_height="wrap_content">

HTML5调用百度地图API进行地理定位实例

自从HTML5的标准确定以后,越来越多的网站使用HTML5来进行开发.虽然对HTML5支持的浏览器不是很多,但是依然抵挡不了大伙对HTML5开发的热情.今天为大家带来的是使用HTML5调用百度地图API进行地理定位实例.请看下面代码: <!DOCTYPE html> <html> <title>HTML5调用百度地图API进行地理定位实例</title> <head> <meta http-equiv="Content-Type&

如何利用【百度地图API】进行定位?非GPS定位

原文:如何利用[百度地图API]进行定位?非GPS定位 如果你可以上网,如果你有火狐浏览器,那么恭喜你.你能很容易使用以下代码进行定位! ------------------------------------------------------------------------------- 百度地图API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用程序. 其中,有Geolocation这个类,可以帮助你进行定位. 它的原理是,利用

Android 百度地图API 定位 导航

看看这个利用百度地图定位并实现目的地导航的Demo.首先看实现效果:                          进 入后首先会得到当前位置,在地图上显示出来,在输入框中输入目的地后,就会在地图上出现最佳线路,我这里设置的是距离最小的驾车线路,另外还有公交线路. 步行线路,在代码中都有详细注释.另外,在控制台还输出了线路上每一个节点的信息以及起始位置和目的地的距离,信息显示的是在当前节点的导航信息.如下 图: 接下来就看如何实现了,首先,注册百度开发者账号,并进入百度地图API查看相关资料

PHP利用百度地图API进行IP定位和GPS定位

最近在做一个手机端的webapp地图应用,而核心内容当然是定位了,但是定位的话有几种方式,IP定位,GPS定位,基站定位(这个貌似webapp用不了), 那么剩下核心的gps定位和ip定位了,我们知道,html5有定位API,但是该API拿到的GPS数据是硬件坐标,无法直接显示在地图上. 后来上百度LBS云看到有地图IP定位API和GPS坐标转换API,地址:http://developer.baidu.com/map/ 百度地图API的调用需要申请KEY,这里就不具体介绍了,直接贴上本人写了两

百度地图API的IP定位城市和浏览器定位(转)

百度地图API提供了Geolocation 和 LocalCity两个服务类. 这俩API可以分别供用户在JavaScript中进行定位和城市确认. 1 本质上,Geolocation这个类是使用了支持HTML5浏览器提供的Geolocation API 来进行定位的.目前Internet Explorer 9.Firefox.Chrome.Safari 以及 Opera 支持地理定位(因为他们支持HTML5). 2 本质上,LocalCity这个类是利用用户IP地址去百度数据库里查询得到IP所

ionic 调用百度地图API,并定位当前位置示例

首先,可以参考JS版本的百度地图API示例. 由于在ionic程序中,我们一般使用的ES5 或 ES6 或者是Typescript. 这与JS 还有有一些区别的.所以,在我们的程序中,代码与官方示例代码格式上不完全相同. 下面,简单说明一下如何在 ionic 程序中 调用 百度地图API. 1. 在ionic程序中,定位到文件: \src\index.html.  添加如下代码 , 注意将"您的密钥" 替换成 您申请的密钥 <script type="text/java

Android 百度地图开发(二)

这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOverlay和PopupOverlay两个地图覆盖物的使用,Overlay是"图层"或"覆盖物"的意思,MyLocationOverlay从名字上面理解就是我的位置图层,他能够实现在地图上显示当前位置的图标以及指南针,MyLocationOverlay只负责显示我的位置,位置数据请使用百度定位SDK获取,将获取的位置数据放在一个LocationData结构中并用该结构设置MyLcationOve

android 百度地图API 使用Marker和InfoWindow

前言:在android开发过程中,百度地图的使用是比较普遍的,但是如何使用,使用什么版本的百度API还是需要一些讲究. 在项目过程中,需要用到百度地图的marker和InfoWindow的功能. 标注覆盖物(百度地图官方图) 布局文件很简单,主要就是mapview,如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.a