第8行: | 第8行: | ||
<div class="header"> | <div class="header"> | ||
<div class="andiord-header active">Android</div> | <div class="andiord-header active">Android</div> | ||
− | <div class="ios-header | + | <div class="ios-header">iOS</div> |
</div> | </div> | ||
<div class="andiord-wrap wrap"> | <div class="andiord-wrap wrap"> | ||
第34行: | 第34行: | ||
<div class="left-qrCode"> | <div class="left-qrCode"> | ||
<!-- 安卓二维码位置 --> | <!-- 安卓二维码位置 --> | ||
− | <div class="qrCode-and">1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/newqrcodes/定位图标指示方向.png</div> | + | <div class="qrCode-and"> |
+ | 1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/newqrcodes/定位图标指示方向.png</div> | ||
<div>扫码体验</div> | <div>扫码体验</div> | ||
</div> | </div> | ||
第49行: | 第50行: | ||
</div> | </div> | ||
<div class="wrap_right_nav_r">下载源码</div><!-- 安卓源码地址 --> | <div class="wrap_right_nav_r">下载源码</div><!-- 安卓源码地址 --> | ||
− | <div class="github-url-and">//mapopen-website-wiki.bj.bcebos.com/demos/location/LocationDirectionDemo.zip</div> | + | <div class="github-url-and"> |
+ | //mapopen-website-wiki.bj.bcebos.com/demos/location/LocationDirectionDemo.zip</div> | ||
</div> | </div> | ||
<div class="wrap_table"> | <div class="wrap_table"> | ||
第62行: | 第64行: | ||
<div>描述</div> | <div>描述</div> | ||
<div>备注</div> | <div>备注</div> | ||
− | </div> | + | </div><!-- 表格接口,可有多个 --> |
− | + | ||
<div class="table_wrap_con"> | <div class="table_wrap_con"> | ||
<div class="table_wrap_w"> | <div class="table_wrap_w"> | ||
<div> | <div> | ||
− | <div class="table-wrap-className">BaiduMap </div> | + | <div class="table-wrap-className">BaiduMap</div> |
</div> | </div> | ||
<div> | <div> | ||
第81行: | 第82行: | ||
<div class="table_wrap_w"> | <div class="table_wrap_w"> | ||
<div> | <div> | ||
− | <div class="table-wrap-className">BaiduMap </div> | + | <div class="table-wrap-className">BaiduMap</div> |
</div> | </div> | ||
<div> | <div> | ||
第95行: | 第96行: | ||
<div class="table_wrap_w"> | <div class="table_wrap_w"> | ||
<div> | <div> | ||
− | <div class="table-wrap-className">BaiduMap </div> | + | <div class="table-wrap-className">BaiduMap</div> |
</div> | </div> | ||
<div> | <div> | ||
第112行: | 第113行: | ||
</div> | </div> | ||
<div> | <div> | ||
− | <div>MyLocationConfiguration(LocationMode mode, boolean enableDirection, BitmapDescriptor customMarker)</div> | + | <div>MyLocationConfiguration(LocationMode mode, boolean enableDirection, |
+ | BitmapDescriptor customMarker)</div> | ||
</div> | </div> | ||
<div> | <div> | ||
− | <div>1.mode 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态2.enableDirection 是否允许显示方向信息3.customMarker 设置用户自定义定位图标,可以为 null</div> | + | <div>1.mode 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态2.enableDirection |
+ | 是否允许显示方向信息3.customMarker 设置用户自定义定位图标,可以为 null</div> | ||
</div> | </div> | ||
<div> | <div> | ||
第180行: | 第183行: | ||
</div> | </div> | ||
</div> | </div> | ||
− | |||
</div> | </div> | ||
</div> | </div> | ||
第202行: | 第204行: | ||
</div><!-- 安卓示例代码位置 --> | </div><!-- 安卓示例代码位置 --> | ||
<div class="pre-wrap-w pre-wrap-w-and"> | <div class="pre-wrap-w pre-wrap-w-and"> | ||
− | <pre class="prettyprint prettyprinted pre-and"> | + | <pre class="prettyprint prettyprinted pre-and">mBaiduMap.setMyLocationEnabled(true); |
− | mBaiduMap.setMyLocationEnabled(true); | + | |
MyLocationConfiguration myLocationConfiguration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null); | MyLocationConfiguration myLocationConfiguration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null); | ||
</pre> | </pre> | ||
第211行: | 第212行: | ||
</div> | </div> | ||
<div class="success">复制成功</div> | <div class="success">复制成功</div> | ||
− | |||
</div> | </div> | ||
</div> | </div> | ||
第222行: | 第222行: | ||
</div><!-- 安卓示例代码位置 --> | </div><!-- 安卓示例代码位置 --> | ||
<div class="pre-wrap-w pre-wrap-w-and"> | <div class="pre-wrap-w pre-wrap-w-and"> | ||
− | <pre class="prettyprint prettyprinted pre-and"> | + | <pre class="prettyprint prettyprinted pre-and">// 获取传感器管理服务 |
− | // 获取传感器管理服务 | + | |
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); | mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); | ||
// 为系统的方向传感器注册监听器 | // 为系统的方向传感器注册监听器 | ||
第234行: | 第233行: | ||
</div> | </div> | ||
<div class="success">复制成功</div> | <div class="success">复制成功</div> | ||
− | |||
</div> | </div> | ||
</div> | </div> | ||
第245行: | 第243行: | ||
</div><!-- 安卓示例代码位置 --> | </div><!-- 安卓示例代码位置 --> | ||
<div class="pre-wrap-w pre-wrap-w-and"> | <div class="pre-wrap-w pre-wrap-w-and"> | ||
− | <pre class="prettyprint prettyprinted pre-and"> | + | <pre class="prettyprint prettyprinted pre-and">/** |
− | /** | + | |
* 传感器方向信息回调 | * 传感器方向信息回调 | ||
*/ | */ | ||
第272行: | 第269行: | ||
</div> | </div> | ||
<div class="success">复制成功</div> | <div class="success">复制成功</div> | ||
− | |||
</div> | </div> | ||
</div> | </div> | ||
第284行: | 第280行: | ||
<div class="video-wrap infor"> | <div class="video-wrap infor"> | ||
<div class="video-control"></div><!-- ios视频位置 --> | <div class="video-control"></div><!-- ios视频位置 --> | ||
− | <pre>//mapopen-website-wiki.bj.bcebos.com/demos/ | + | <pre>//mapopen-website-wiki.bj.bcebos.com/demos/iosVideos/location/定位图标指示方向@1x.mp4</pre> |
</div> | </div> | ||
<div class="video-icon-ios"> | <div class="video-icon-ios"> | ||
第298行: | 第294行: | ||
</div> | </div> | ||
</div> | </div> | ||
− | <div class="left-qrCode"> | + | <div class="left-qrCode iosqrCode"> |
<!-- ios二维码位置 --> | <!-- ios二维码位置 --> | ||
− | <div class="qrCode-ios">//mapopen-website-wiki.bj.bcebos.com/demos/ | + | <div class="qrCode-ios"> |
− | <div> | + | 1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/ioscodes/定位图标指示方向@1xios.png</div> |
+ | <div>扫码体验</div> | ||
</div> | </div> | ||
</div> | </div> | ||
第311行: | 第308行: | ||
<!-- IOS使用产品下选项,可有多个 --> | <!-- IOS使用产品下选项,可有多个 --> | ||
<!-- 产品1|/index.php?title=test --> | <!-- 产品1|/index.php?title=test --> | ||
− | <div class="documentA"> | + | <div class="documentA">iOS定位SDK|/index.php?title=ios-locsdk</div><!-- --> |
− | + | ||
− | + | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="wrap_right_nav_r">下载源码</div><!-- IOS源码地址 --> | <div class="wrap_right_nav_r">下载源码</div><!-- IOS源码地址 --> | ||
− | <div class="github-url-ios">//mapopen-website-wiki.bj.bcebos.com/demos/ | + | <div class="github-url-ios"> |
+ | //mapopen-website-wiki.bj.bcebos.com/demos/location/LocationDirectionSDKDemo.zip</div> | ||
</div> | </div> | ||
<div class="wrap_table"> | <div class="wrap_table"> | ||
第329行: | 第325行: | ||
<div>接口</div> | <div>接口</div> | ||
<div>描述</div> | <div>描述</div> | ||
− | |||
</div><!-- ios表格接口内容,可有多个 --> | </div><!-- ios表格接口内容,可有多个 --> | ||
<!-- 表格接口,可有多个 --> | <!-- 表格接口,可有多个 --> | ||
第335行: | 第330行: | ||
<div class="table_wrap_w"> | <div class="table_wrap_w"> | ||
<div> | <div> | ||
− | <div class="table-wrap-className"> | + | <div class="table-wrap-className">BMKMapView</div> |
</div> | </div> | ||
<div> | <div> | ||
− | <div>- (void) | + | <div>-(void)updateLocationData:(BMKUserLocation *)userLocation;</div> |
</div> | </div> | ||
<div> | <div> | ||
− | <div> | + | <div>动态更新我的位置数据</div> |
</div> | </div> | ||
+ | </div><!-- --> | ||
+ | <div class="table_wrap_w"> | ||
<div> | <div> | ||
− | <div> | + | <div class="table-wrap-className">BMKLocationManager</div> |
</div> | </div> | ||
− | + | <div> | |
− | + | <div>[self.locationManager startUpdatingLocation];</div> | |
+ | </div> | ||
+ | <div> | ||
+ | <div>开始连续定位</div> | ||
+ | </div> | ||
+ | </div> | ||
<div class="table_wrap_w"> | <div class="table_wrap_w"> | ||
<div> | <div> | ||
− | <div class="table-wrap-className"> | + | <div class="table-wrap-className">BMKLocationManager</div> |
</div> | </div> | ||
<div> | <div> | ||
− | <div> | + | <div>[self.locationManager startUpdatingHeading];</div> |
</div> | </div> | ||
<div> | <div> | ||
− | <div> | + | <div>开始设备朝向事件回调</div> |
</div> | </div> | ||
+ | </div> | ||
+ | <div class="table_wrap_w"> | ||
<div> | <div> | ||
− | <div> | + | <div class="table-wrap-className">BMKLocationManager</div> |
+ | </div> | ||
+ | <div> | ||
+ | <div>- (void)BMKLocationManager:(BMKLocationManager *)manager | ||
+ | didUpdateLocation:(BMKLocation *)location orError:(NSError *)error;</div> | ||
+ | </div> | ||
+ | <div> | ||
+ | <div>连续定位回调函数</div> | ||
+ | </div> | ||
+ | </div> | ||
+ | <div class="table_wrap_w"> | ||
+ | <div> | ||
+ | <div class="table-wrap-className">BMKLocationManager</div> | ||
+ | </div> | ||
+ | <div> | ||
+ | <div>- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager | ||
+ | didUpdateHeading:(CLHeading * _Nullable)heading;</div> | ||
+ | </div> | ||
+ | <div> | ||
+ | <div>该方法为BMKLocationManager提供设备朝向的回调方法</div> | ||
</div> | </div> | ||
− | |||
</div> | </div> | ||
− | |||
− | |||
</div> | </div> | ||
</div> | </div> | ||
</div> | </div> | ||
− | |||
</div> | </div> | ||
</div> | </div> | ||
第374行: | 第393行: | ||
<div class="left-icon"></div> | <div class="left-icon"></div> | ||
<div>核心代码</div> | <div>核心代码</div> | ||
+ | </div> | ||
+ | <div class="pre-nav"> | ||
+ | <div>1.设置显示定位图层和定位模式</div> | ||
</div> | </div> | ||
<div class="pre-wrap"> | <div class="pre-wrap"> | ||
− | |||
<div class="pre-wrap-nav"> | <div class="pre-wrap-nav"> | ||
<div>Objective-C</div> | <div>Objective-C</div> | ||
</div> | </div> | ||
− | |||
<div class="pre-wrap-w pre-wrap-w-ios code_container"> | <div class="pre-wrap-w pre-wrap-w-ios code_container"> | ||
<!-- ios示例代码位置 --> | <!-- ios示例代码位置 --> | ||
− | <pre class="prettyprint prettyprinted pre-ios"> | + | <pre class="prettyprint prettyprinted pre-ios">// 显示定位图层 |
− | + | _mapView.showsUserLocation = YES; | |
− | / | + | // 定位模式 |
− | + | _mapView.userTrackingMode = BMKUserTrackingModeHeading; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</pre> | </pre> | ||
<div class="pre-btn"> | <div class="pre-btn"> | ||
第428行: | 第415行: | ||
<div class="success">复制成功</div> | <div class="success">复制成功</div> | ||
</div> | </div> | ||
+ | </div> | ||
+ | <div class="pre-nav"> | ||
+ | <div>2.实现连续定位回调代理方法和设备朝向的回调代理方法</div> | ||
</div> | </div> | ||
<div class="pre-wrap"> | <div class="pre-wrap"> | ||
− | |||
<div class="pre-wrap-nav"> | <div class="pre-wrap-nav"> | ||
<div>Objective-C</div> | <div>Objective-C</div> | ||
</div> | </div> | ||
− | |||
<div class="pre-wrap-w pre-wrap-w-ios code_container"> | <div class="pre-wrap-w pre-wrap-w-ios code_container"> | ||
<!-- ios示例代码位置 --> | <!-- ios示例代码位置 --> | ||
− | <pre class="prettyprint prettyprinted pre-ios"> | + | <pre class="prettyprint prettyprinted pre-ios">/// 连续定位回调函数 |
− | + | - (void)BMKLocationManager:(BMKLocationManager *)manager didUpdateLocation:(BMKLocation *)location orError:(NSError *)error { | |
− | / | + | // 定位错误信息 |
− | - (void) | + | if (error) { |
− | + | NSLog(@"locError:{%zd - %@};", error.code, error.localizedDescription); | |
− | + | return; | |
− | + | } | |
− | if ( | + | |
− | + | // 定位结果 | |
− | + | if (location) { | |
− | + | self.userLocation.location = location.location; | |
− | + | // 如需展示我的位置图标需要调用此方法 | |
− | + | [self.mapView updateLocationData:self.userLocation]; | |
− | + | // 设置地图中心点 | |
− | + | [self.mapView setCenterCoordinate:location.location.coordinate]; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
} | } | ||
− | |||
} | } | ||
+ | /// 该方法为BMKLocationManager提供设备朝向的回调方法。 | ||
+ | - (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager didUpdateHeading:(CLHeading * _Nullable)heading { | ||
+ | if (!heading) { return; } | ||
+ | |||
+ | /// 更新当前位置数据 | ||
+ | self.userLocation.heading = heading; | ||
+ | [self.mapView updateLocationData:self.userLocation]; | ||
+ | } | ||
+ | |||
</pre> | </pre> | ||
<div class="pre-btn"> | <div class="pre-btn"> | ||
第482行: | 第459行: | ||
<div class="success">复制成功</div> | <div class="success">复制成功</div> | ||
</div> | </div> | ||
+ | </div> | ||
+ | <div class="pre-nav"> | ||
+ | <div>3.开始定位,开始设备朝向事件回调</div> | ||
</div> | </div> | ||
<div class="pre-wrap"> | <div class="pre-wrap"> | ||
− | |||
<div class="pre-wrap-nav"> | <div class="pre-wrap-nav"> | ||
<div>Objective-C</div> | <div>Objective-C</div> | ||
</div> | </div> | ||
− | |||
<div class="pre-wrap-w pre-wrap-w-ios code_container"> | <div class="pre-wrap-w pre-wrap-w-ios code_container"> | ||
<!-- ios示例代码位置 --> | <!-- ios示例代码位置 --> | ||
− | <pre class="prettyprint prettyprinted pre-ios"> | + | <pre class="prettyprint prettyprinted pre-ios">// 开始连续定位 |
− | + | [self.locationManager startUpdatingLocation]; | |
− | / | + | // 开始设备朝向事件回调 |
− | + | [self.locationManager startUpdatingHeading]; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</pre> | </pre> | ||
<div class="pre-btn"> | <div class="pre-btn"> | ||
第537行: | 第482行: | ||
</div> | </div> | ||
</div> | </div> | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</div> | </div> | ||
</div> | </div> |
2020年9月24日 (四) 20:56的版本
定位图标指示方向
功能场景
定位图标根据用户面向的方向进行旋转,在路线规划、导航等场景中帮助用户更加清晰的判断移动方向。
Android
iOS
//mapopen-website-wiki.bj.bcebos.com/demos/AndroidVideos/定位图标指示方向.mp4
1590746640|//mapopen-website-wiki.bj.bcebos.com/demos/newqrcodes/定位图标指示方向.png
扫码体验
使用产品
Android定位SDK|/index.php?title=android-locsdk
下载源码
//mapopen-website-wiki.bj.bcebos.com/demos/location/LocationDirectionDemo.zip
核心接口
类
接口
描述
备注
BaiduMap
setMyLocationEnabled(boolean enabled)
设置是否允许定位图层
地图SDK
BaiduMap
setMyLocationConfiguration(MyLocationConfiguration configuration)
设置定位图层配置信息,只有先允许定位图层后设置定位图层配置信息才会生效
地图SDK
BaiduMap
setMyLocationData(MyLocationData data)
设置定位数据, 只有先允许定位图层后设置数据才会生效
地图SDK
MyLocationConfiguration
MyLocationConfiguration(LocationMode mode, boolean enableDirection,
BitmapDescriptor customMarker)
1.mode 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态2.enableDirection
是否允许显示方向信息3.customMarker 设置用户自定义定位图标,可以为 null
地图SDK
MyLocationData.Builder
direction(float direction)
设置定位数据的方向信息
地图SDK
LocationClient
start()
启动定位sdk
定位SDK
LocationClient
setLocOption(LocationClientOption locOption)
给定位客户端设置参数
定位SDK
LocationClient
BDAbstractLocationListener
监听定位结果回调函数
定位SDK
重点关注
通过系统的方向传感器获取到方向角度,结合地图SDK中的定位图层功能实现方向指向。
核心代码
1.开启定位图层设置定位模式
JAVA
mBaiduMap.setMyLocationEnabled(true); MyLocationConfiguration myLocationConfiguration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null);
复制
深色
复制成功
2.获取传感器管理服务注册方向传感监听器
JAVA
// 获取传感器管理服务 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); // 为系统的方向传感器注册监听器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_UI);
复制
深色
复制成功
3.获取传感器方向回调信息设置给定位图层
JAVA
/** * 传感器方向信息回调 */ @Override public void onSensorChanged(SensorEvent sensorEvent) { double x = sensorEvent.values[SensorManager.DATA_X]; if (Math.abs(x - lastX) > 1.0) { mCurrentDirection = (float) x; // 构造定位图层数据 myLocationData = new MyLocationData.Builder() .accuracy(mCurrentAccracy) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(mCurrentDirection) .latitude(mCurrentLat) .longitude(mCurrentLon).build(); // 设置定位图层数据 mBaiduMap.setMyLocationData(myLocationData); } lastX = x; }
复制
深色
复制成功