Capítulo 6 Sección 3 Posicionamiento del mapa de Baidu


Introducción

Este conjunto de SDK de posicionamiento es gratuito para el público y no hay límite en el número de veces que se puede utilizar la interfaz. Antes de usar, debe solicitar la clave (AK) antes de poder usarla

Principio de posicionamiento

Para utilizar el SDK de posicionamiento de Android de Baidu, debe registrarse para obtener permisos de uso de red y GPS. El SDK de posicionamiento utiliza señales de GPS, estación base y Wi-Fi para el posicionamiento. Cuando una aplicación inicia una solicitud de posicionamiento al SDK de posicionamiento, el SDK de posicionamiento generará el correspondiente según la situación real de los factores de posicionamiento de la aplicación (GPS, estación base, señal Wi-Fi) (como si el GPS está encendido, si está conectado a la red, si hay señal, etc.) El posicionamiento se basa en el posicionamiento.

Los usuarios pueden establecer la base de posicionamiento para satisfacer sus propias necesidades:
si el usuario establece la prioridad del GPS, primero se utilizará el GPS para el posicionamiento, si el posicionamiento GPS no está activado o no hay información de ubicación disponible y la conexión de red es normal, el posicionamiento SDK volverá al posicionamiento de la red (es decir, Wi-Fi Fi y estación base). Para obtener resultados de posicionamiento de red más precisos, encienda el interruptor Wi-Fi del teléfono móvil.

Configuración del entorno

  1. Importe el archivo de la biblioteca (liblocSDK7.so).
  2. Agregue el servicio de posicionamiento (AndroidManifest.xml).
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote">
<intent-filter>
<action android:name="com.baidu.location.service_v5.0.0"/>
</intent-filter>
</service>
  1. Agregar permisos (AndroidManifest.xml)
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

❖Pasos para localizar el SDK

  1. Cree un cliente de servicio de ubicación (LocationClient).
  2. Configure el cliente del servicio de ubicación (LocationClientOption).
  3. Implemente la interfaz de escucha (BDAbstractLocationListener). Monitoreo de ubicación
  4. Iniciar el servicio de ubicación (LocationClient.start ())

Class LocationClient

-La clase de cliente del servicio de localización.
La clase LocationClient debe declararse en el hilo principal y requiere parámetros de tipo de contexto. El contexto debe ser un contexto válido para todo el proceso, se recomienda utilizar getApplicationConext para obtener un contexto válido para todo el proceso.

public LocationClient mLocationClient = null;
	public void onCreate() {
    
    
	mLocationClient= new LocationClient(getApplicationContext());
}

Inserte la descripción de la imagen aquí

Class LocationClientOption

-Configurar la clase de parámetro del SDK de posicionamiento.
Configure varios parámetros de configuración del SDK de posicionamiento, como el modo de posicionamiento, el intervalo de tiempo de posicionamiento, el tipo de sistema de coordenadas, etc.

Los principales parámetros son: Modo de posicionamiento, tipo de coordenadas de retorno, si activar GPS, etc.
Hay tres tipos de modos de posicionamiento:

  1. Modo de posicionamiento de alta precisión: utilice el posicionamiento de red y el posicionamiento GPS al mismo tiempo, y devuelva primero los resultados de posicionamiento de mayor precisión.
  2. Modo de posicionamiento de bajo consumo: no use GPS, solo use posicionamiento de red (WiFi y estación base).
  3. Solo use el modo de posicionamiento del dispositivo: no use el posicionamiento de red, solo use GPS para el posicionamiento. Sin embargo, el posicionamiento en ambientes interiores no es compatible con este modo.

Inserte la descripción de la imagen aquí

Configurar la clase de parámetro del SDK de posicionamiento

❖ Tipo de coordenadas:
➢ Sistema de coordenadas de longitud y latitud de la Oficina Nacional de Estudios y Mediciones: "gcj02"
➢ Sistema de coordenadas de Baidu Mercator: "bd09"
➢ Sistema de coordenadas de longitud y latitud de Baidu: "bd09ll"
##### GPS: wgs84
❖ Modo de posicionamiento:
➢ Modo de posicionamiento de alta precisión: High_Accuracy
Modo de posicionamiento de bajo consumo: Battery_Saving
Solo modo de posicionamiento del dispositivo: Device_Sensors

// 设置定位的相关配置
LocationClientOption option= new LocationClientOption();
	option.setOpenGps(true); // 打开GPS
	option.setCoorType("bd09ll"); // 坐标类型
	option.setScanSpan(1000); // 扫描间隔
// 定位模式
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
// 通过配置参数对定位客户端进行设置
mLocationClient.setLocOption(option); 

Implementar la interfaz de devolución de llamada de solicitud de ubicación (BDLocationListener)

// 定位服务客户端设置回调接口
locationClient.registerLocationListener(locationListener);
class MyLocationListener extends BDAbstractLocationListener{
    
    
// 异步返回的定位结果
	@Override
	public void onReceiveLocation(BDLocation location) {
    
    
	// 处理定位信息
	}
} 

❖Clase BDLocation Callback Clase de coordenadas Baidu.

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

En este punto, se puede completar una función básica de posicionamiento del mapa. Si desea mostrar en el mapa, al igual que Baidu, aparece un punto para indicar la ubicación del mapa, debe utilizar las dos categorías siguientes:
➢MyLocationConfiguration (modo de visualización de la capa de ubicación de configuración)
➢MylocationData (datos de ubicación).

❖Clase MyLocationConfiguration

  • Configure el modo de visualización de la capa de posicionamiento.
    Establezca la información de la capa de ubicación a través del método BaiduMap.setMyLocationConfigeration ().
public MyLocationConfiguration(MyLocationConfiguration.LocationMode mode,
		boolean enableDirection,
		BitmapDescriptor customMarker)
参数:
mode - 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态
enableDirection - 是否允许显示方向信息
customMarker - 设置用户自定义定位图标,可以为 null
❖ Modo de visualización de la capa de posicionamiento:

➢ MyLocationConfiguration.LocationMode.COMPASS estado de la brújula, mostrar el círculo de dirección de posicionamiento, mantener el icono de posicionamiento en el centro del mapa
➢ MyLocationConfiguration.LocationMode.FOLLOWING seguir estado, mantener el icono de posicionamiento en el centro del mapa
➢ MyLocationConfiguration.LocationMode.NORMAL estado normal: el mapa no es correcto al actualizar los datos de posicionamiento Realizar alguna operación

Clase MyLocationData

  • La clase de datos de ubicación, MyLocationData contiene un generador de clases interno para construir objetos
// 构造定位数据
MyLocationData locData = new MyLocationData.Builder()
	.accuracy(radius) // 精度
	.direction(direction)// 方向
	.latitude(latitude) // 纬度
	.longitude(longitude)// 经度
	.build(); // 构建生成定位数据对象
// 通过BaiduMap.setMyLocationData()设置定位数据
bdMap.setMyLocationData(locData); 

La latitud y la longitud del posicionamiento se pueden obtener a través del método de posicionamiento onReceiveLocation (), y luego el punto posicionado se puede mover al centro del mapa a través del método animateMapStatus ()

LatLng ll = new LatLng(mCurrentLantitude,mCurrentLongitude);
MapStatusUpdate u= MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);

Activar posicionamiento

❖Abra el servicio de ubicación a través de la función start () del cliente del servicio de ubicación y cierre el servicio de ubicación a través de la función stop (). ❖ Debido a que el posicionamiento también consume más energía, generalmente activamos el posicionamiento en el inicio de actividad y desactivamos el posicionamiento en onStop, de modo que cuando la aplicación se minimiza, el posicionamiento de solicitud de GPS no se realizará todo el tiempo.

protected void onStart() {
    
    
	mBaiduMap.setMyLocationEnabled(true); // 开启图层定位
		if (!mLocationClient.isStarted()) {
    
    
		mLocationClient.start();
}
super.onStart();
}
protected void onStop() {
    
    
	mBaiduMap.setMyLocationEnabled(false); // 关闭图层定位
	mLocationClient.stop();
	super.onStop();
}

Supongo que te gusta

Origin blog.csdn.net/qq_44627608/article/details/109799454
Recomendado
Clasificación