安卓:百度地图开发(超详细)

这篇具有很好参考价值的文章主要介绍了安卓:百度地图开发(超详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、百度地图介绍

1. MapView类:

2. BaiduMap类:

3. GeoCoder类:

4.GeoCodeOption类:

5.GeoCodeResult类:

6. LocationClient类:

7.LocationClientOption 类:

8. RoutePlanSearch类:

9.LatLng 类:

10. PoiSearch 类: 

11.PoiResult 类:

12.PoiInfo 类:

13.PoiOverlay 类:

14.MarkerOptions类:

15.MapStatusUpdate类:

二、使用例子

例1:获取当前位置:

 MainActivity :

 activity_main:

 AndroidManifest:

 运行结果

一、百度地图介绍

        百度地图SDK是一套供开发者使用的软件开发工具包(SDK),用于在Android应用程序中集成和使用百度地图功能。通过使用百度地图SDK,开发者可以实现在自己的应用中显示地图、获取定位信息、进行搜索、导航等功能。

        百度地图SDK提供了许多常用的类和方法,用于实现各种地图相关功能。以下是一些常用的类及其方法:

1. MapView类:

        MapView 类是百度地图SDK提供的一个控件类,用于在应用程序的界面上显示地图。它是一个自定义的 View,可以与 BaiduMap 类关联,实现地图的显示和交互功能。 

  常用方法: 

  •    getMap():获取百度地图对象(BaiduMap)的实例。
  •    onResume():在Activity的生命周期方法中调用,用于恢复地图控件的绘制和定位功能。
  •    onPause():在Activity的生命周期方法中调用,用于暂停地图控件的绘制和定位功能。
  •    onDestroy():在Activity的生命周期方法中调用,用于销毁地图控件。

2. BaiduMap类:

        BaiduMap 类是百度地图SDK中的核心类,用于管理和操作地图。它提供了一系列方法和接口,用于显示地图、控制地图状态、添加覆盖物、定位等功能。 

常用方法:  

  •    setMapType():设置地图显示类型,如普通地图、卫星地图等。
  •    setMapStatus():设置地图的状态,包括中心点坐标、缩放级别、倾斜角度和旋转角度等。
  •    addOverlay():添加覆盖物(Overlay),如标记点(Marker)、折线(Polyline)和多边形(Polygon)等。
  •    clear():清除地图上的所有覆盖物。
  •    setOnMapClickListener():设置地图点击事件监听器。
  •    setOnMarkerClickListener():设置标记点点击事件监听器。

3. GeoCoder类:

        GeoCoder 类是百度地图SDK提供的一个地理编码和反地理编码工具类,用于将地址信息与地理坐标之间进行转换。通过 GeoCoder 类,开发者可以实现将地址解析为经纬度坐标(地理编码),或者将经纬度坐标解析为地址信息(反地理编码)。 

常用方法:  

  •    newInstance():创建 GeoCoder 实例。
  •    setOnGetGeoCodeResultListener():设置地理编码查询结果监听器。
  •    setOnGetReverseGeoCodeResultListener():设置反地理编码查询结果监听器。
  •    geocode():发起地理编码查询,将地址信息转换为经纬度坐标。
  •    reverseGeoCode():发起反地理编码查询,将经纬度坐标转换为地址信息。

4.GeoCodeOption类:

        GeoCodeOption类是百度地图API中的一个选项类,用于设置地理编码的参数和选项。地理编码是将地理位置转换为对应的经纬度坐标的过程。

常用方法

  • address(String address):设置待编码的地址信息。

  • city(String city):设置地址所在的城市名。

  • retCoordType(String coordType):设置返回结果的坐标类型。可选参数包括:"bd09ll"(百度坐标,默认值)、"gcj02"(国测局坐标)和"wgs84"(WGS-84坐标)。

  • getAddress():获取待编码的地址信息。

  • getCity():获取地址所在的城市名。

  • getRetCoordType():获取返回结果的坐标类型。

5.GeoCodeResult类:

        GeoCodeResult类是百度地图API中用于表示地理编码结果的类。通过该类,可以获取地理编码的查询结果信息,包括位置坐标、地址描述等。 

  • getLocation()获取地理编码的位置坐标(LatLng对象)。
  • getAddress()获取地理编码结果的地址描述。
  • getBusinessCircle():获取地理编码结果所属的商圈名称。
  • getSematicDescription()获取地理编码结果的语义化描述信息,即更详细的文字描述。

6. LocationClient类:

         LocationClient 类是百度定位SDK提供的核心类,用于实现设备的定位功能。通过 LocationClient 类,开发者可以获取设备的当前位置信息,包括经纬度坐标、速度、方向等。

常用方法:  

  •    registerLocationListener():注册定位监听器。
  •    start():开始定位。
  •    stop():停止定位。

7.LocationClientOption 类:

  LocationClientOption是百度地图定位 SDK 中的一个配置类,用于设置定位相关的参数和选项。通过创建 LocationClientOption 对象并对其进行适当的配置,可以实现更精确和个性化的定位功能。

常用方法

  • setLocationMode(LocationClientOption.LocationMode mode)设置定位模式,包括三种模式:

    • Hight_Accuracy:高精度模式,同时使用 GPS 和网络定位。
    • Battery_Saving:低功耗模式,只使用网络定位。
    • Device_Sensors:仅使用 GPS 定位。
  • setCoorType(String coorType)设置返回的定位结果坐标系类型,包括:

    • bd09ll:百度经纬度坐标(默认)。
    • gcj02:国测局加密经纬度坐标。
    • bd09:百度墨卡托坐标。
  • setScanSpan(int scanSpan)设置定位间隔时间,单位为毫秒。设定的值大于等于 1000ms 才有效。

  • setIsNeedAddress(boolean isNeedAddress)设置是否需要获取地址信息,默认为 false。

  • setOpenGps(boolean isOpenGps)设置是否打开 GPS,默认为 false。

  • setIsNeedLocationDescribe(boolean isNeedLocationDesc)设置是否需要位置描述信息,默认为 false。

  • setIsNeedLocationPoiList(boolean isNeedLocationPoiList)设置是否需要周边 POI 信息,默认为 false。

  • setIsIgnoreCacheException(boolean isIgnoreCacheException)设置是否忽略 GPS 定位失败时的异常,默认为 false。

  • setEnableSimulateGps(boolean enableSimulateGps)设置是否允许模拟 GPS 位置,默认为 false。

8. RoutePlanSearch类:

        RoutePlanSearch 类是百度地图SDK提供的路线规划搜索类,用于实现不同交通方式的路线规划功能。通过 RoutePlanSearch 类,开发者可以根据起点和终点的坐标,进行驾车、步行、公交等多种交通方式的路线规划,并获取详细的路线信息。

常用方法:  

  •    setOnGetRoutePlanResultListener():设置路径规划结果监听器。
  •    drivingSearch():发起驾车路线规划。
  •    walkingSearch():发起步行路线规划。
  •    transitSearch():发起公交路线规划。

9.LatLng 类:

        LatLng 类是百度地图SDK提供的一个表示经纬度坐标的类。它用于存储地理位置的经度和纬度信息,并提供了一些方法来获取和设置经纬度值。 

常用方法:  

  • latitude()获取纬度值。
  • longitude()获取经度值。
  • equals(LatLng other)判断当前 LatLng 对象是否与另一个 LatLng 对象相等。
  • toString()返回 LatLng 对象的字符串表示。 

10. PoiSearch 类: 

        PoiSearch 类是百度地图SDK提供的一个兴趣点搜索类,用于实现地图上的兴趣点检索功能。通过 PoiSearch 类,开发者可以根据关键词、地理位置等条件进行兴趣点的搜索,并获取相关的搜索结果。

常用方法:  

  •  newInstance()创建 PoiSearch 实例。
  • searchInCity(PoiCitySearchOption option)在指定城市内搜索兴趣点。需要创建一个 PoiCitySearchOption 对象,并设置要搜索的城市名称、关键词等参数,然后调用该方法进行搜索。
  • searchNearby(PoiNearbySearchOption option)在指定位置附近搜索兴趣点。需要创建一个 PoiNearbySearchOption 对象,并设置中心点坐标、搜索半径、关键词等参数,然后调用该方法进行搜索。
  • searchInBound(PoiBoundSearchOption option)在指定矩形区域内搜索兴趣点。需要创建一个 PoiBoundSearchOption 对象,并设置矩形区域的左下角和右上角坐标、关键词等参数,然后调用该方法进行搜索。
  • setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener listener)设置兴趣点搜索结果的监听器。需要实现 OnGetPoiSearchResultListener 接口,并将其注册给 PoiSearch 对象,以接收搜索结果的回调。
  • searchPoiDetail(PoiDetailSearchOption option)根据兴趣点的 UID 获取详细信息。需要创建一个 PoiDetailSearchOption 对象,并设置兴趣点的 UID,然后调用该方法进行详情查询。
  • searchPoiIndoor(PoiIndoorOption option)在室内地图中搜索兴趣点。需要创建一个 PoiIndoorOption 对象,并设置室内ID、关键词等参数,然后调用该方法进行搜索。
  • searchPoiPage(int pageNum)加载下一页的搜索结果。需要指定要加载的页码,通过设置之前的搜索选项对象的 pageNum 属性来实现分页加载。
  • destroy()销毁 PoiSearch 对象,释放相关资源。

11.PoiResult 类:

        PoiResult 类是百度地图SDK中的一个类,用于表示兴趣点搜索的结果集。它包含了符合搜索条件的一组兴趣点数据,并提供了相关的方法来获取和操作这些数据。

  • getAllPoi()获取搜索到的所有结果。
  • error:表示搜索结果的错误码。 

12.PoiInfo 类:

        PoiInfo 类是百度地图SDK中的一个类,用于表示兴趣点的信息。它包含了兴趣点的名称、地址、经纬度坐标等详细信息,并提供了相关的方法来获取和操作这些数据。 

  • name:POI 名称。
  • address:POI 地址。

13.PoiOverlay 类:

        PoiOverlay 类是百度地图SDK中的一个类,用于在地图上绘制兴趣点标注覆盖物。它可以将 PoiResult 中的兴趣点数据在地图上展示,并提供了一些方法用于自定义标注样式和点击事件处理。

  • setData():设置搜索到的 POI 数据。
  • addToMap():将兴趣点标注添加到地图上。
  • zoomToSpan():缩放地图以适应所有兴趣点。

14.MarkerOptions类:

        MarkerOptions类是百度地图API中的一个选项类,用于设置标记点(Marker)的参数和选项。标记点是地图上用于标识某个位置的图标,常用于显示兴趣点、位置标注等。 

  • position(LatLng position)设置标记点的经纬度坐标。
  • icon(BitmapDescriptor icon)设置标记点的图标资源,可以是本地图片、远程图片或内置的图标样式。使用BitmapDescriptorFactory类创建BitmapDescriptor对象,并将其作为参数传入。
  • zIndex(int zIndex)设置标记点的堆叠顺序,值越大表示越靠前。
  • perspective(boolean perspective)设置标记点的透视效果,即倾斜角度。true表示启用透视效果,false表示不启用。
  • draggable(boolean draggable)设置标记点是否可拖拽。true表示可拖拽,false表示不可拖拽。
  • animateType(MarkerAnimateType animateType)设置标记点的动画效果类型。可以使用MarkerAnimateType枚举类中的常量值,如MarkerAnimateType.noneMarkerAnimateType.growMarkerAnimateType.jumpMarkerAnimateType.drop
  • getIcon()获取标记点的图标资源。
  • getPosition()获取标记点的经纬度坐标。
  • getZIndex()获取标记点的堆叠顺序。
  • isPerspective()判断标记点是否启用透视效果。
  • isDraggable()判断标记点是否可拖拽。
  • getAnimateType()获取标记点的动画效果类型。

15.MapStatusUpdate类:

        MapStatusUpdate类是百度地图API中用于设置地图状态更新的类。通过该类,可以对地图进行平移、缩放、旋转等操作。 

  • newLatLng(LatLng latLng):创建一个以指定经纬度为中心点的地图状态更新对象。
  • newLatLngBounds(LatLngBounds bounds)创建一个以指定经纬度边界为显示范围的地图状态更新对象。
  • newMapStatus(MapStatus mapStatus)创建一个以指定地图状态为基础的地图状态更新对象。
  • newLatLngZoom(LatLng latLng, float zoom)创建一个以指定经纬度为中心点、指定缩放级别的地图状态更新对象。
  • zoomTo(float zoom)创建一个将地图缩放到指定级别的地图状态更新对象。
  • zoomBy(float amount):创建一个按照指定比例增加(正值)或减小(负值)地图缩放级别的地图状态更新对象。
  • rotate(float rotate)创建一个以指定角度顺时针旋转地图的地图状态更新对象。
  • overlook(float overlook)创建一个以指定角度俯视地图的地图状态更新对象。
  • scrollBy(int offsetX, int offsetY)创建一个沿屏幕像素坐标偏移地图中心点的地图状态更新对象。

二、使用例子

例1:获取当前位置:

 MainActivity :

package com.example.location;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.model.LatLng;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.geocode.GeoCodeOption;
import com.baidu.mapapi.search.geocode.GeoCodeResult;
import com.baidu.mapapi.search.geocode.GeoCoder;
import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener;
import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;

public class MainActivity extends AppCompatActivity {
    LocationClient mLocationClient;

    MapView mMapView;
    BaiduMap mBaiduMap;
    private Button select;
    private EditText editText;
    boolean isFirstLocate = true;
    boolean isFirstText = true;
    TextView tv_Lat; // 经度
    TextView tv_Lon; // 纬度
    TextView tv_Add; // 地址
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 初始化地图应用
        SDKInitializer.setAgreePrivacy(this.getApplicationContext(),true);
        LocationClient.setAgreePrivacy(true);
        SDKInitializer.initialize(this.getApplicationContext());
        setContentView(R.layout.activity_main);
        mMapView = findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();
        tv_Lat = findViewById(R.id.tv_Lat);
        tv_Lon = findViewById(R.id.tv_Lon);
        tv_Add = findViewById(R.id.tv_Add);
        select = findViewById(R.id.btn_search);
        editText = findViewById(R.id.address);
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);
        }else {
            requestLocation();
        }

        select.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String address = editText.getText().toString();
                if (address!=null){

                    searchGeoCode(address);
                }else {
                    Toast.makeText(MainActivity.this, "请输入地点", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case 1:
                if (grantResults[0]!=PackageManager.PERMISSION_GRANTED){
                    Toast.makeText(this, "没有定位权限!", Toast.LENGTH_SHORT).show();
                    finish();
                }else{
                        requestLocation();
                }
        }
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    }

    private void requestLocation() {
         // 定位前初始化
        initLocation();
        // 发起定位
        mLocationClient.start();
    }

    private void initLocation() {
//        LocationClient.setAgreePrivacy(true);
        try {
            mLocationClient = new LocationClient(getApplicationContext());
            mLocationClient.registerLocationListener(new MyLocationListener());

            // 定位客户端操作
            LocationClientOption option = new LocationClientOption();
            // 设置扫描时间
            option.setScanSpan(1000);
            // 设置定位参数
            option.setCoorType("bd09ll"); // 设置坐标类型为百度经纬度
            option.setIsNeedAddress(true); // 设置需要获取地址信息
            // 设置定位模式
            option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
//            option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);
//            option.setLocationMode(LocationClientOption.LocationMode.Device_Sensors);
            option.setIsNeedAddress(true); // 设置需要地址信息
            // 保存定位参数
            mLocationClient.setLocOption(option);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // 内部类,百度位置监听器
    private class MyLocationListener implements BDLocationListener{

        @Override
        public void onReceiveLocation(BDLocation bdLocation) {
            if (isFirstText){
                tv_Lat.setText(bdLocation.getLatitude()+"");
                tv_Lon.setText(bdLocation.getLongitude()+"");
                tv_Add.setText(bdLocation.getAddrStr());
                isFirstText = false;
            }
            // GPS 定位或网格定位时
            if (bdLocation.getLocType()==BDLocation.TypeGpsLocation||bdLocation.getLocType()==BDLocation.TypeNetWorkLocation){
                navigateTo(bdLocation);
            }
        }

        private void navigateTo(BDLocation bdLocation) {
            if (isFirstLocate){
                LatLng ll = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());
                MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);
                // 以动画更新方式,实现对手势引起的地图状态的更新
                mBaiduMap.animateMapStatus(update);
                // 创建自定义标记
                BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.arrow_icon);
                MarkerOptions markerOptions = new MarkerOptions().position(ll).icon(bitmap).anchor(0.5f, 0.5f);
                mBaiduMap.addOverlay(markerOptions);

                isFirstLocate = false;
            }
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();
    }
    // 实现检索地点功能
    private void searchGeoCode(String address) {
        mBaiduMap.clear(); // 清除标记点

        GeoCoder geoCoder = GeoCoder.newInstance();
        GeoCodeOption geoCodeOption = new GeoCodeOption();
        geoCodeOption.address(address);
        geoCodeOption.city(address);
        geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCoderResultListener() {
            @Override
            public void onGetGeoCodeResult(GeoCodeResult geoCodeResult) {
                if (geoCodeResult == null || geoCodeResult.error != SearchResult.ERRORNO.NO_ERROR) {
                    Toast.makeText(MainActivity.this, "检索错误", Toast.LENGTH_SHORT).show();
                } else {
                    LatLng latLng = geoCodeResult.getLocation();
                    MarkerOptions markerOptions = new MarkerOptions()
                            .position(latLng)
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow_icon));
                    mBaiduMap.addOverlay(markerOptions);
                    MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(latLng, 15);
                    tv_Lat.setText(" "+latLng.latitude); // 经度
                    tv_Lon.setText(" "+latLng.longitude); // 纬度

                    tv_Add.setText(geoCodeResult.getAddress()); // 地址
                    mBaiduMap.setMapStatus(mMapStatusUpdate);

                }
            }
            @Override
            public void onGetReverseGeoCodeResult(ReverseGeoCodeResult reverseGeoCodeResult) {
                if (reverseGeoCodeResult == null || reverseGeoCodeResult.error != SearchResult.ERRORNO.NO_ERROR) {
                    Toast.makeText(MainActivity.this, "获取地址信息失败", Toast.LENGTH_SHORT).show();
                } else {
                    String address = reverseGeoCodeResult.getAddress();
                    Toast.makeText(MainActivity.this, address, Toast.LENGTH_SHORT).show();
                }
            }
        });
        geoCoder.geocode(geoCodeOption);
    }

    @Override
    protected void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
    }
}

 activity_main:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="#e0000000"
        >
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginLeft="12dp"
            android:layout_marginTop="20dp"
            android:orientation="horizontal"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="纬度:"
                android:textColor="#ffffff"
                android:textSize="15dp"
                />
            <TextView
                android:id="@+id/tv_Lat"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:textColor="#ffffff"
                android:textSize="15sp"
                />
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginLeft="12dp"
            android:layout_marginTop="10dp"
            android:orientation="horizontal"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="经度:"
                android:textColor="#ffffff"
                android:textSize="15dp"
                />
            <TextView
                android:id="@+id/tv_Lon"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:textColor="#ffffff"
                android:textSize="15sp"
                />
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginLeft="12dp"
            android:layout_marginTop="10dp"
            android:orientation="horizontal"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="地址:"
                android:textColor="#ffffff"
                android:textSize="15dp"
                />
            <TextView
                android:id="@+id/tv_Add"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:textColor="#ffffff"
                android:textSize="15sp"
                />
        </LinearLayout>
    </LinearLayout>
    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="8"
        android:clickable="true"/>
    <LinearLayout
        android:id="@+id/layout_search"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="8dp"
        android:background="#FFFFFF"
        android:layout_alignParentBottom="true">

        <EditText
            android:id="@+id/address"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="输入地址"
            android:layout_weight="1" />

        <Button
            android:id="@+id/btn_search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="搜索" />

    </LinearLayout>


</LinearLayout>

 AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.location">
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.UI"

        >
        <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="你的Key" />
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
        </service>
    </application>

</manifest>

 运行结果:

安卓:百度地图开发(超详细),第三方库,android

未完待续。。。文章来源地址https://www.toymoban.com/news/detail-617277.html

到了这里,关于安卓:百度地图开发(超详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安卓:百度地图开发(超详细)

    目录 一、百度地图介绍 1. MapView类: 2. BaiduMap类: 3. GeoCoder类: 4.GeoCodeOption类: 5.GeoCodeResult类: 6. LocationClient类: 7.LocationClientOption 类: 8. RoutePlanSearch类: 9.LatLng 类: 10. PoiSearch 类:  11.PoiResult 类: 12.PoiInfo 类: 13.PoiOverlay 类: 14.MarkerOptions类: 15.MapStatusUpdate类: 二、使用

    2024年02月15日
    浏览(40)
  • uniapp 小程序调取第三方地图导航

    事件: 在manifest.json的源码视图里面配置,允许获取经纬度 获取经纬度:  方法: 若未授权获取位置,点击弹出弹窗获取权限

    2024年02月15日
    浏览(33)
  • uniapp小程序调用第三方地图导航

    效果    

    2024年02月15日
    浏览(38)
  • 如何看待第三方百度云 Pandownload 作者被捕?

    点击关注上方“五分钟学算法”, 设为“置顶或星标”,第一时间送达干货。 转自纯洁的微笑 1 从百度网盘说起 2013年8月12日,金山快盘宣传永久免费100G云空间,以此为导火线,网盘大战正式拉开了序幕。最后百度、金山、腾讯、网易、360、115等各大互联网公司杀得你死我

    2024年02月02日
    浏览(37)
  • 本仓库主要用来收集一些 Android 开发中常用的第三方 UI 库及其简单 Demo

    | 第三方库 | 介绍 | Demo | 使用说明 | | — | — | — | — | | CircleImageView | 显示圆形图片 | CircleImageViewDemo | Android UI Libs 之 CircleImageView.md | | android-gif-drawable | 显示 gif 图片 | android-gif-drawabledemo | Android UI Libs 之 android-gif-drawable.md | | AndroidSwipeLayout | 滑动布局,可以实现侧滑菜单与侧

    2024年04月15日
    浏览(50)
  • 7 款最佳第三方安卓 ROM

    虽然现在越来越多的安卓智能手机用户选择使用手机自带系统(比如 MIUI 、 EMUI 等),但第三方安卓  ROM 仍不可替代,尤其是对于已超出官方系统更新期限的设备。第三方 ROM 可以帮助用户延长设备的使用寿命,允许用户在性能过剩的旧款设备上体验最新的安卓系统体验,并

    2024年02月06日
    浏览(46)
  • 安卓玩机搞机-----没有第三方包 刷写第三方各种GSI系统 体验非官方系统

    很多安卓友友热衷与刷这些各种第三方包体验。但有个别机型第三方资源较少。而且有的机型要体验非官方系统却没有对应系统的第三方包。那可以体验下刷gsi系统来畅玩。今天的帖子就聊聊GSI系统的各种刷写操作和对应的故障解析、 💔💔💔💔💔💔💔💔💔什么是GSI 系

    2024年02月05日
    浏览(68)
  • 第三方开发工具—PyCharm(安装、使用、汉化)超详细、图超多、注脚特多(Windows操作系统)

    目录 前言 一、PyCharm安装 安装地址 安装步骤 二、第一次启动 三、使用(开始编程) 1.第一个文件夹 2.第一个程序 3.运行第一个程序 四、汉化插件 五、总结 做任何事情时,舒适的环境是非常重要的。一个好的软件开发环境能给人带来不一样的体验。 先让我们来看看PyCharm的

    2024年02月03日
    浏览(80)
  • 安卓玩机搞机----移植第三方rom修复 第三方GSI系统修复bug综合解析【一】

    很多朋友热衷与刷写第三方非当前机型官方系统的rom。和刷写第三方gsi等等。例如 米系列机型刷写Flyme 一加机型刷写miui oppo刷写gsi等等。 很多友友也会尝试自己移植第三方rom。但此类操作最大的问题在于修复可以开机后的bug,今天的教程综合说明下这类修复思路。资源步骤

    2024年02月07日
    浏览(87)
  • 微信小程序获取当前位置与跳转第三方地图

    1. 先在app.json添加配置 2. 获取定位权限,打开地址选点 3. 如果要打开跳转第三方地图的内置地图

    2024年02月15日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包