Capítulo 6 Seção 3 Posicionamento do mapa Baidu


Introdução

Este conjunto de SDK de posicionamento é gratuito para o público e não há limite para o número de vezes que a interface pode ser usada. Antes de usar, você precisa solicitar a chave (AK) antes de usá-la

Princípio de posicionamento

Para usar o SDK de posicionamento Android do Baidu, você deve se registrar para permissões de uso de GPS e rede. O SDK de posicionamento usa sinais de GPS, estação base e Wi-Fi para o posicionamento. Quando um aplicativo inicia uma solicitação de posicionamento para o SDK de posicionamento, o SDK de posicionamento irá gerar o correspondente de acordo com a situação real dos fatores de posicionamento do aplicativo (GPS, estação base, sinal de Wi-Fi) (como se o GPS está ligado, se ele está conectado à rede, se há um sinal, etc.) O posicionamento é baseado no posicionamento.

Os usuários podem definir a base de posicionamento para atender às suas próprias necessidades:
se o usuário definir a prioridade do GPS, o GPS será usado para o posicionamento primeiro, se o posicionamento do GPS não estiver ativado ou não houver informações de localização disponíveis e a conexão de rede estiver normal, o O posicionamento do SDK retornará ao posicionamento da rede (ou seja, Wi-Fi e estação base). Para obter resultados de posicionamento de rede mais precisos, ligue o botão Wi-Fi do telefone móvel.

Configuração do ambiente

  1. Importe o arquivo de biblioteca (liblocSDK7.so).
  2. Adicione serviço de posicionamento (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. Adicionar permissões (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"/>

❖ Etapas para localizar o SDK

  1. Crie um cliente de serviço de localização (LocationClient).
  2. Defina o cliente do serviço de localização (LocationClientOption).
  3. Implemente a interface do ouvinte (BDAbstractLocationListener). Monitoramento de localização
  4. Inicie o serviço de localização (LocationClient.start ())

Classe LocationClient

-A classe de cliente do serviço de localização.
A classe LocationClient deve ser declarada no thread principal e requer parâmetros do tipo Context. O contexto precisa ser um contexto válido para todo o processo, é recomendável usar getApplicationConext para obter um contexto válido para todo o processo.

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

Insira a descrição da imagem aqui

Classe LocationClientOption

-Configure a classe de parâmetro do SDK de posicionamento.
Configure vários parâmetros de configuração do SDK de posicionamento, como modo de posicionamento, intervalo de tempo de posicionamento, tipo de sistema de coordenadas, etc.

Os principais parâmetros são: Modo de posicionamento, tipo de coordenada de retorno, se deve ligar o GPS, etc.
Existem três tipos de modos de posicionamento:

  1. Modo de posicionamento de alta precisão: Use o posicionamento de rede e o posicionamento GPS ao mesmo tempo e retorne os resultados de posicionamento de mais alta precisão primeiro.
  2. Modo de posicionamento de baixo consumo de energia: não use GPS, use apenas o posicionamento de rede (WiFi e estação base).
  3. Use apenas o modo de posicionamento do dispositivo: Não use o posicionamento de rede, use apenas o GPS para posicionamento. No entanto, o posicionamento em ambientes internos não é suportado neste modo.

Insira a descrição da imagem aqui

Configure a classe de parâmetro de posicionamento do SDK

❖ Tipo de coordenada:
➢ Sistema de Coordenadas de Longitude e Latitude do Bureau Nacional de Levantamento e Medição: "gcj02"
➢ Sistema de Coordenadas Baidu Mercator: "bd09"
➢ Sistema de Coordenadas de Longitude e Latitude Baidu: "bd09ll"
##### GPS: wgs84
❖ Modo de posicionamento:
➢ Modo de posicionamento de alta precisão: High_Accuracy
Modo de posicionamento de baixa energia: Battery_Saving
➢ Apenas modo de posicionamento do 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 interface de retorno de chamada de solicitação de localização (BDLocationListener)

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

❖Class BDLocation Callback Baidu coordinate class.

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Neste ponto, uma função básica de posicionamento do mapa pode ser concluída. Se você deseja exibir no mapa, assim como o Baidu, um ponto aparece para indicar a localização do mapa, você precisa usar as duas categorias a seguir:
➢MyLocationConfiguration (modo de exibição da camada de localização de configuração)
➢MylocationData (dados de localização).

❖Classe MyLocationConfiguration

  • Configure o modo de exibição da camada de posicionamento.
    Defina as informações da camada de localização por meio do método BaiduMap.setMyLocationConfigeration ().
public MyLocationConfiguration(MyLocationConfiguration.LocationMode mode,
		boolean enableDirection,
		BitmapDescriptor customMarker)
参数:
mode - 定位图层显示方式, 默认为 LocationMode.NORMAL 普通态
enableDirection - 是否允许显示方向信息
customMarker - 设置用户自定义定位图标,可以为 null
❖Modo de exibição da camada de posicionamento:

➢ MyLocationConfiguration.LocationMode.COMPASS estado da bússola, exibir o círculo de direção de posicionamento, manter o ícone de posicionamento no centro do mapa
➢ MyLocationConfiguration.LocationMode.FOLLOWING seguir o estado, manter o ícone de posicionamento no centro do mapa
➢ MyLocationConfiguration.LocationMode.NORMAL estado normal: o mapa não está correto ao atualizar os dados de posicionamento Faça qualquer operação

Classe MyLocationData

  • Classe de dados de localização, MyLocationData contém uma classe interna Builder para construir objetos
// 构造定位数据
MyLocationData locData = new MyLocationData.Builder()
	.accuracy(radius) // 精度
	.direction(direction)// 方向
	.latitude(latitude) // 纬度
	.longitude(longitude)// 经度
	.build(); // 构建生成定位数据对象
// 通过BaiduMap.setMyLocationData()设置定位数据
bdMap.setMyLocationData(locData); 

A latitude e longitude do posicionamento podem ser obtidas através do método de posicionamento onReceiveLocation (), e então o ponto posicionado pode ser movido para o centro do mapa através do método animateMapStatus ()

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

Ative o posicionamento

❖Abra o serviço de localização por meio da função start () do cliente do serviço de localização e feche o serviço de localização por meio da função stop (). ❖Como o posicionamento também consome mais energia, normalmente ligamos o posicionamento em onStart of Activity e desligamos o posicionamento em onStop, para que quando o aplicativo for minimizado, o posicionamento de solicitação de GPS não será executado o tempo todo.

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

Acho que você gosta

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