徐州建设工程交易网站,十大黄冈网站排行榜,wordpress 加文章列表,wordpress发布文章提示失败一、百度地图介绍 百度地图SDK是一套供开发者使用的软件开发工具包#xff08;SDK#xff09;#xff0c;用于在Android应用程序中集成和使用百度地图功能。通过使用百度地图SDK#xff0c;开发者可以实现在自己的应用中显示地图、获取定位信息、进行搜索、导航等功能。 百…一、百度地图介绍 百度地图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. LocationClient类 LocationClient 类是百度定位SDK提供的核心类用于实现设备的定位功能。通过 LocationClient 类开发者可以获取设备的当前位置信息包括经纬度坐标、速度、方向等。
常用方法 registerLocationListener()注册定位监听器。 start()开始定位。 stop()停止定位。
5. RoutePlanSearch类 RoutePlanSearch 类是百度地图SDK提供的路线规划搜索类用于实现不同交通方式的路线规划功能。通过 RoutePlanSearch 类开发者可以根据起点和终点的坐标进行驾车、步行、公交等多种交通方式的路线规划并获取详细的路线信息。
常用方法 setOnGetRoutePlanResultListener()设置路径规划结果监听器。 drivingSearch()发起驾车路线规划。 walkingSearch()发起步行路线规划。 transitSearch()发起公交路线规划。
6.LatLng 类 LatLng 类是百度地图SDK提供的一个表示经纬度坐标的类。它用于存储地理位置的经度和纬度信息并提供了一些方法来获取和设置经纬度值。
常用方法
latitude()获取纬度值。longitude()获取经度值。equals(LatLng other)判断当前 LatLng 对象是否与另一个 LatLng 对象相等。toString()返回 LatLng 对象的字符串表示。
7. 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 对象释放相关资源。
8.PoiResult 类 PoiResult 类是百度地图SDK中的一个类用于表示兴趣点搜索的结果集。它包含了符合搜索条件的一组兴趣点数据并提供了相关的方法来获取和操作这些数据。
getAllPoi()获取搜索到的所有结果。error表示搜索结果的错误码。
9.PoiInfo 类 PoiInfo 类是百度地图SDK中的一个类用于表示兴趣点的信息。它包含了兴趣点的名称、地址、经纬度坐标等详细信息并提供了相关的方法来获取和操作这些数据。
namePOI 名称。addressPOI 地址。
10.PoiOverlay 类 PoiOverlay 类是百度地图SDK中的一个类用于在地图上绘制兴趣点标注覆盖物。它可以将 PoiResult 中的兴趣点数据在地图上展示并提供了一些方法用于自定义标注样式和点击事件处理。
setData()设置搜索到的 POI 数据。addToMap()将兴趣点标注添加到地图上。zoomToSpan()缩放地图以适应所有兴趣点。
二、使用例子
例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.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.geocode.GeoCoder;import com.baidu.mapapi.search.poi.PoiSearch;public class MainActivity extends AppCompatActivity {LocationClient mLocationClient;MapView mMapView;BaiduMap mBaiduMap;boolean isFirstLocate true;PoiSearch mPoiSearch;TextView tv_Lat; // 经度TextView tv_Lon; // 纬度TextView tv_Add; // 地址GeoCoder mGeoCoder;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 初始化地图应用SDKInitializer.setAgreePrivacy(this.getApplicationContext(), true);LocationClient.setAgreePrivacy(true);// 初始化百度地图SDK。这个方法必须在使用百度地图相关功能之前调用否则无法正常使用地图功能。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);
// search findViewById(R.id.search);// // 初始化 PoiSearch 和 GeoCoder 对象
// mPoiSearch PoiSearch.newInstance();
// mGeoCoder GeoCoder.newInstance();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();}}Overridepublic 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() {try {mLocationClient new LocationClient(getApplicationContext());mLocationClient.registerLocationListener(new MyLocationListener());// 定位客户端操作LocationClientOption option new LocationClientOption();// 设置扫描时间option.setScanSpan(1000);// 设置定位模式option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);option.setIsNeedAddress(true); // 设置需要地址信息// 保存定位参数mLocationClient.setLocOption(option);} catch (Exception e) {e.printStackTrace();}}// 内部类百度位置监听器private class MyLocationListener implements BDLocationListener {Overridepublic void onReceiveLocation(BDLocation bdLocation) {tv_Lat.setText(String.valueOf(bdLocation.getLatitude()));tv_Lon.setText(String.valueOf(bdLocation.getLongitude()));tv_Add.setText(bdLocation.getAddrStr());// 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;}}}Overrideprotected void onResume() {super.onResume();mMapView.onResume();}Overrideprotected void onPause() {super.onPause();mMapView.onPause();}Overrideprotected void onDestroy() {super.onDestroy();mMapView.onDestroy();// 释放 PoiSearch 和 GeoCoder 对象
// mPoiSearch.destroy();
// mGeoCoder.destroy();}} activity_main
?xml version1.0 encodingutf-8?
FrameLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivitycom.baidu.mapapi.map.MapViewandroid:idid/bmapViewandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:clickabletrue/LinearLayoutandroid:layout_widthfill_parentandroid:layout_heightwrap_contentandroid:orientationverticalandroid:background#E0474141LinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:layout_marginLeft12dpandroid:layout_marginTop20dpandroid:orientationhorizontalTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text纬度android:textColor#ffffffandroid:textSize15dp/TextViewandroid:idid/tv_Latandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textandroid:textColor#ffffffandroid:textSize15sp//LinearLayoutLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:layout_marginLeft12dpandroid:layout_marginTop10dpandroid:orientationhorizontalTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text经度android:textColor#ffffffandroid:textSize15dp/TextViewandroid:idid/tv_Lonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textandroid:textColor#ffffffandroid:textSize15sp//LinearLayoutLinearLayoutandroid:layout_widthfill_parentandroid:layout_heightfill_parentandroid:layout_marginLeft12dpandroid:layout_marginTop10dpandroid:orientationhorizontalTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text地址android:textColor#ffffffandroid:textSize15dp/TextViewandroid:idid/tv_Addandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textandroid:textColor#ffffffandroid:textSize15sp//LinearLayout/LinearLayout
/FrameLayout AndroidManifest:
?xml version1.0 encodingutf-8?
manifest xmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.locationuses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION/uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE/uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE/uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION/uses-permission android:nameandroid.permission.CHANGE_WIFI_STATE/uses-permission android:nameandroid.permission.INTERNET/applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcherandroid:labelstring/app_nameandroid:roundIconmipmap/ic_launcher_roundandroid:supportsRtltrueandroid:themestyle/Theme.UImeta-dataandroid:namecom.baidu.lbsapi.API_KEYandroid:value你的Key /activityandroid:name.MainActivityandroid:exportedtrueintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activityservice android:namecom.baidu.location.f android:enabledtrue android:process:remote/service/application/manifest 运行结果 未完待续。。。