Localização do mapa do Baidu no Android

1. Registre-se e obtenha a chave

Primeiro, você precisa concluir o trabalho de registro do desenvolvedor, endereço: https://passport.baidu.com/v2/?reg
Então você pode ver meu aplicativo , você pode criar um aplicativo:
Insira a descrição da imagem aqui
criar um documento de referência: SDK de posicionamento do Android

Atualmente, o serviço doméstico SDK de posicionamento do Android do Baidu Maps não cobra nenhuma taxa dos desenvolvedores que o utilizam para fins não comerciais.

Como só preciso dessa função, escolho aqui:
Insira a descrição da imagem aqui
mude para o diretório do usuário .android:
Insira a descrição da imagem aqui
entrada cmd, insira o comando:

keytool -list -v -keystore debug.keystore -alias androiddebugkey

Digite a senha do armazenamento de chaves :, andoridentão você poderá vê-la SHA1, basta copiá-la e digitá-la.
Em seguida, está o nome do pacote. Abra o arquivo de configuração AndroidManifest.xml. O conteúdo correspondente ao atributo do pacote é o nome do pacote do aplicativo.
Em seguida, envie-o.
Insira a descrição da imagem aqui

2. Configuração do Android Studio

Baixe o SDK de localização do Android, descompacte-o e coloque o jar e assim nas bibliotecas para o local correspondente no projeto.
Insira a descrição da imagem aqui
Estou aqui no download, seleciono o posicionamento básico, JAR, e pego o BaiduLBS_AndroidSDK_Lib.ziparquivo.
Siga as instruções para descompactar e o conteúdo após a descompactação é o seguinte:
Insira a descrição da imagem aqui
Em seguida, siga as instruções no site oficial para colocar o SDK de posicionamento do Android no projeto Android:
mude para a projectvisualização e encontre libs:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Em seguida, adicione dependências:

android {
    ...
    // 百度定位SDK需要
    sourceSets{
        main{
            jniLibs.srcDir  'libs'
            jni.srcDirs = []    //disable automatic ndk-build
        }
    }
}

implementation files('libs/BaiduLBS_Android.jar')

3. Adicionar AK

Adicione o seguinte código ao arquivo AndroidManifest.xml para configurar a chave de desenvolvimento (AK):

<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="AK" >
</meta-data>

Adicionar serviço:

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

Adicionar permissões:

<!-- 这个权限用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <!-- 这个权限用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!-- 访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET"/>

4. Obtenha o endereço

Basta seguir o caso do site oficial: http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/get-location/address
Após o teste, você também precisa chamar o onstopmétodo.

// 百度定位
public LocationClient mLocationClient = null;
private MyLocationListener myLocationListener = new MyLocationListener();
private void getLocation() {
    
    
  // 请求定位
    mLocationClient = new LocationClient(getApplicationContext());
    List<String> permissionList = new ArrayList<>();
    //如果没有启动下面权限,就询问用户让用户打开
    if (ContextCompat.checkSelfPermission(PushActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    
    
        permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
    }
    if (ContextCompat.checkSelfPermission(PushActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
    
    
        permissionList.add(Manifest.permission.READ_PHONE_STATE);
    }
    if (ContextCompat.checkSelfPermission(PushActivity.this,
            Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    
    
        permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
    }
    if (!permissionList.isEmpty()) {
    
    
        String[] permissions = permissionList.toArray(new String[permissionList.size()]);
        ActivityCompat.requestPermissions(PushActivity.this, permissions, 1);
    }
    requestLocation();
}
/**
* 请求定位
 */
private void requestLocation(){
    
    
    LocationClientOption option = new LocationClientOption();
    option.setScanSpan(500);
    option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
    option.setCoorType("bd09ll");
    option.setScanSpan(1000);
    option.setOpenGps(true);
    option.setIsNeedAddress(true);
    option.setLocationNotify(true);
    option.setIgnoreKillProcess(false);
    option.SetIgnoreCacheException(false);
    option.setEnableSimulateGps(false);
    option.setNeedNewVersionRgc(true);

    mLocationClient.setLocOption(option);
    mLocationClient.registerLocationListener(myLocationListener);
    mLocationClient.start();
}

private String currentPosition = "";
public class MyLocationListener extends BDAbstractLocationListener {
    
    

    @Override
    public void onReceiveLocation(BDLocation location) {
    
    
        String addr = location.getAddrStr();    //获取详细地址信息
        String country = location.getCountry();    //获取国家
        String province = location.getProvince();    //获取省份
        String city = location.getCity();    //获取城市
        String district = location.getDistrict();    //获取区县
        String street = location.getStreet();    //获取街道信息
        String adcode = location.getAdCode();    //获取adcode
        String town = location.getTown();    //获取乡镇信息

        EditText reedit_page_position = findViewById(R.id.reedit_page_position);
        String position_detail = country+province+city+district;
        if(currentPosition.equals(position_detail) && currentPosition.length()!=0){
    
    
            mLocationClient.unRegisterLocationListener(myLocationListener);
            mLocationClient.stop();
        }
        reedit_page_position.setText(position_detail);
        currentPosition = position_detail;
    }

}

Basta ligar getLocation.

Acho que você gosta

Origin blog.csdn.net/qq_26460841/article/details/115261413
Recomendado
Clasificación