目錄
一、百度地圖介紹
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:獲取當(dāng)前位置:
?MainActivity :
?activity_main:
?AndroidManifest:
?運行結(jié)果
一、百度地圖介紹
????????百度地圖SDK是一套供開發(fā)者使用的軟件開發(fā)工具包(SDK),用于在Android應(yīng)用程序中集成和使用百度地圖功能。通過使用百度地圖SDK,開發(fā)者可以實現(xiàn)在自己的應(yīng)用中顯示地圖、獲取定位信息、進行搜索、導(dǎo)航等功能。
????????百度地圖SDK提供了許多常用的類和方法,用于實現(xiàn)各種地圖相關(guān)功能。以下是一些常用的類及其方法:
1. MapView類:
????????MapView 類是百度地圖SDK提供的一個控件類,用于在應(yīng)用程序的界面上顯示地圖。它是一個自定義的 View,可以與 BaiduMap 類關(guān)聯(lián),實現(xiàn)地圖的顯示和交互功能。?
? 常用方法:?
- ? ?getMap():獲取百度地圖對象(BaiduMap)的實例。
- ? ?onResume():在Activity的生命周期方法中調(diào)用,用于恢復(fù)地圖控件的繪制和定位功能。
- ? ?onPause():在Activity的生命周期方法中調(diào)用,用于暫停地圖控件的繪制和定位功能。
- ? ?onDestroy():在Activity的生命周期方法中調(diào)用,用于銷毀地圖控件。
2. BaiduMap類:
????????BaiduMap 類是百度地圖SDK中的核心類,用于管理和操作地圖。它提供了一系列方法和接口,用于顯示地圖、控制地圖狀態(tài)、添加覆蓋物、定位等功能。?
常用方法:??
- ? ?setMapType():設(shè)置地圖顯示類型,如普通地圖、衛(wèi)星地圖等。
- ? ?setMapStatus():設(shè)置地圖的狀態(tài),包括中心點坐標(biāo)、縮放級別、傾斜角度和旋轉(zhuǎn)角度等。
- ? ?addOverlay():添加覆蓋物(Overlay),如標(biāo)記點(Marker)、折線(Polyline)和多邊形(Polygon)等。
- ? ?clear():清除地圖上的所有覆蓋物。
- ? ?setOnMapClickListener():設(shè)置地圖點擊事件監(jiān)聽器。
- ? ?setOnMarkerClickListener():設(shè)置標(biāo)記點點擊事件監(jiān)聽器。
3. GeoCoder類:
????????GeoCoder 類是百度地圖SDK提供的一個地理編碼和反地理編碼工具類,用于將地址信息與地理坐標(biāo)之間進行轉(zhuǎn)換。通過 GeoCoder 類,開發(fā)者可以實現(xiàn)將地址解析為經(jīng)緯度坐標(biāo)(地理編碼),或者將經(jīng)緯度坐標(biāo)解析為地址信息(反地理編碼)。?
常用方法:??
- ? ?newInstance():創(chuàng)建 GeoCoder 實例。
- ? ?setOnGetGeoCodeResultListener():設(shè)置地理編碼查詢結(jié)果監(jiān)聽器。
- ? ?setOnGetReverseGeoCodeResultListener():設(shè)置反地理編碼查詢結(jié)果監(jiān)聽器。
- ? ?geocode():發(fā)起地理編碼查詢,將地址信息轉(zhuǎn)換為經(jīng)緯度坐標(biāo)。
- ? ?reverseGeoCode():發(fā)起反地理編碼查詢,將經(jīng)緯度坐標(biāo)轉(zhuǎn)換為地址信息。
4.GeoCodeOption類:
????????GeoCodeOption類是百度地圖API中的一個選項類,用于設(shè)置地理編碼的參數(shù)和選項。地理編碼是將地理位置轉(zhuǎn)換為對應(yīng)的經(jīng)緯度坐標(biāo)的過程。
常用方法
-
address(String address)
:設(shè)置待編碼的地址信息。 -
city(String city)
:設(shè)置地址所在的城市名。 -
retCoordType(String coordType)
:設(shè)置返回結(jié)果的坐標(biāo)類型??蛇x參數(shù)包括:"bd09ll"(百度坐標(biāo),默認值)、"gcj02"(國測局坐標(biāo))和"wgs84"(WGS-84坐標(biāo))。 -
getAddress()
:獲取待編碼的地址信息。 -
getCity()
:獲取地址所在的城市名。 -
getRetCoordType()
:獲取返回結(jié)果的坐標(biāo)類型。
5.GeoCodeResult類:
????????GeoCodeResult類是百度地圖API中用于表示地理編碼結(jié)果的類。通過該類,可以獲取地理編碼的查詢結(jié)果信息,包括位置坐標(biāo)、地址描述等。?
-
getLocation()
:獲取地理編碼的位置坐標(biāo)(LatLng對象)。 -
getAddress()
:獲取地理編碼結(jié)果的地址描述。 -
getBusinessCircle()
:獲取地理編碼結(jié)果所屬的商圈名稱。 -
getSematicDescription()
:獲取地理編碼結(jié)果的語義化描述信息,即更詳細的文字描述。
6. LocationClient類:
?????????LocationClient 類是百度定位SDK提供的核心類,用于實現(xiàn)設(shè)備的定位功能。通過 LocationClient 類,開發(fā)者可以獲取設(shè)備的當(dāng)前位置信息,包括經(jīng)緯度坐標(biāo)、速度、方向等。
常用方法:??
- ? ?registerLocationListener():注冊定位監(jiān)聽器。
- ? ?start():開始定位。
- ? ?stop():停止定位。
7.LocationClientOption 類:
??LocationClientOption
類是百度地圖定位 SDK 中的一個配置類,用于設(shè)置定位相關(guān)的參數(shù)和選項。通過創(chuàng)建 LocationClientOption
對象并對其進行適當(dāng)?shù)呐渲茫梢詫崿F(xiàn)更精確和個性化的定位功能。
常用方法
-
setLocationMode(LocationClientOption.LocationMode mode)
:設(shè)置定位模式,包括三種模式:-
Hight_Accuracy
:高精度模式,同時使用 GPS 和網(wǎng)絡(luò)定位。 -
Battery_Saving
:低功耗模式,只使用網(wǎng)絡(luò)定位。 -
Device_Sensors
:僅使用 GPS 定位。
-
-
setCoorType(String coorType)
:設(shè)置返回的定位結(jié)果坐標(biāo)系類型,包括:-
bd09ll
:百度經(jīng)緯度坐標(biāo)(默認)。 -
gcj02
:國測局加密經(jīng)緯度坐標(biāo)。 -
bd09
:百度墨卡托坐標(biāo)。
-
-
setScanSpan(int scanSpan)
:設(shè)置定位間隔時間,單位為毫秒。設(shè)定的值大于等于 1000ms 才有效。 -
setIsNeedAddress(boolean isNeedAddress)
:設(shè)置是否需要獲取地址信息,默認為 false。 -
setOpenGps(boolean isOpenGps)
:設(shè)置是否打開 GPS,默認為 false。 -
setIsNeedLocationDescribe(boolean isNeedLocationDesc)
:設(shè)置是否需要位置描述信息,默認為 false。 -
setIsNeedLocationPoiList(boolean isNeedLocationPoiList)
:設(shè)置是否需要周邊 POI 信息,默認為 false。 -
setIsIgnoreCacheException(boolean isIgnoreCacheException)
:設(shè)置是否忽略 GPS 定位失敗時的異常,默認為 false。 -
setEnableSimulateGps(boolean enableSimulateGps)
:設(shè)置是否允許模擬 GPS 位置,默認為 false。
8. RoutePlanSearch類:
????????RoutePlanSearch 類是百度地圖SDK提供的路線規(guī)劃搜索類,用于實現(xiàn)不同交通方式的路線規(guī)劃功能。通過 RoutePlanSearch 類,開發(fā)者可以根據(jù)起點和終點的坐標(biāo),進行駕車、步行、公交等多種交通方式的路線規(guī)劃,并獲取詳細的路線信息。
常用方法:??
- ? ?setOnGetRoutePlanResultListener():設(shè)置路徑規(guī)劃結(jié)果監(jiān)聽器。
- ? ?drivingSearch():發(fā)起駕車路線規(guī)劃。
- ? ?walkingSearch():發(fā)起步行路線規(guī)劃。
- ? ?transitSearch():發(fā)起公交路線規(guī)劃。
9.LatLng 類:
????????LatLng 類是百度地圖SDK提供的一個表示經(jīng)緯度坐標(biāo)的類。它用于存儲地理位置的經(jīng)度和緯度信息,并提供了一些方法來獲取和設(shè)置經(jīng)緯度值。?
常用方法:??
-
latitude()
:獲取緯度值。 -
longitude()
:獲取經(jīng)度值。 -
equals(LatLng other)
:判斷當(dāng)前 LatLng 對象是否與另一個 LatLng 對象相等。 -
toString()
:返回 LatLng 對象的字符串表示。?
10.?PoiSearch 類:?
????????PoiSearch 類是百度地圖SDK提供的一個興趣點搜索類,用于實現(xiàn)地圖上的興趣點檢索功能。通過 PoiSearch 類,開發(fā)者可以根據(jù)關(guān)鍵詞、地理位置等條件進行興趣點的搜索,并獲取相關(guān)的搜索結(jié)果。
常用方法:??
-
?
newInstance()
:創(chuàng)建 PoiSearch 實例。 -
searchInCity(PoiCitySearchOption option)
:在指定城市內(nèi)搜索興趣點。需要創(chuàng)建一個 PoiCitySearchOption 對象,并設(shè)置要搜索的城市名稱、關(guān)鍵詞等參數(shù),然后調(diào)用該方法進行搜索。 -
searchNearby(PoiNearbySearchOption option)
:在指定位置附近搜索興趣點。需要創(chuàng)建一個 PoiNearbySearchOption 對象,并設(shè)置中心點坐標(biāo)、搜索半徑、關(guān)鍵詞等參數(shù),然后調(diào)用該方法進行搜索。 -
searchInBound(PoiBoundSearchOption option)
:在指定矩形區(qū)域內(nèi)搜索興趣點。需要創(chuàng)建一個 PoiBoundSearchOption 對象,并設(shè)置矩形區(qū)域的左下角和右上角坐標(biāo)、關(guān)鍵詞等參數(shù),然后調(diào)用該方法進行搜索。 -
setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener listener)
:設(shè)置興趣點搜索結(jié)果的監(jiān)聽器。需要實現(xiàn) OnGetPoiSearchResultListener 接口,并將其注冊給 PoiSearch 對象,以接收搜索結(jié)果的回調(diào)。 -
searchPoiDetail(PoiDetailSearchOption option)
:根據(jù)興趣點的 UID 獲取詳細信息。需要創(chuàng)建一個 PoiDetailSearchOption 對象,并設(shè)置興趣點的 UID,然后調(diào)用該方法進行詳情查詢。 -
searchPoiIndoor(PoiIndoorOption option)
:在室內(nèi)地圖中搜索興趣點。需要創(chuàng)建一個 PoiIndoorOption 對象,并設(shè)置室內(nèi)ID、關(guān)鍵詞等參數(shù),然后調(diào)用該方法進行搜索。 -
searchPoiPage(int pageNum)
:加載下一頁的搜索結(jié)果。需要指定要加載的頁碼,通過設(shè)置之前的搜索選項對象的pageNum
屬性來實現(xiàn)分頁加載。 -
destroy()
:銷毀 PoiSearch 對象,釋放相關(guān)資源。
11.PoiResult 類:
????????PoiResult 類是百度地圖SDK中的一個類,用于表示興趣點搜索的結(jié)果集。它包含了符合搜索條件的一組興趣點數(shù)據(jù),并提供了相關(guān)的方法來獲取和操作這些數(shù)據(jù)。
-
getAllPoi()
:獲取搜索到的所有結(jié)果。 -
error
:表示搜索結(jié)果的錯誤碼。?
12.PoiInfo 類:
????????PoiInfo 類是百度地圖SDK中的一個類,用于表示興趣點的信息。它包含了興趣點的名稱、地址、經(jīng)緯度坐標(biāo)等詳細信息,并提供了相關(guān)的方法來獲取和操作這些數(shù)據(jù)。?
-
name
:POI 名稱。 -
address
:POI 地址。
13.PoiOverlay 類:
????????PoiOverlay 類是百度地圖SDK中的一個類,用于在地圖上繪制興趣點標(biāo)注覆蓋物。它可以將 PoiResult 中的興趣點數(shù)據(jù)在地圖上展示,并提供了一些方法用于自定義標(biāo)注樣式和點擊事件處理。
-
setData()
:設(shè)置搜索到的 POI 數(shù)據(jù)。 -
addToMap()
:將興趣點標(biāo)注添加到地圖上。 -
zoomToSpan()
:縮放地圖以適應(yīng)所有興趣點。
14.MarkerOptions類:
????????MarkerOptions類是百度地圖API中的一個選項類,用于設(shè)置標(biāo)記點(Marker)的參數(shù)和選項。標(biāo)記點是地圖上用于標(biāo)識某個位置的圖標(biāo),常用于顯示興趣點、位置標(biāo)注等。?
-
position(LatLng position)
:設(shè)置標(biāo)記點的經(jīng)緯度坐標(biāo)。 -
icon(BitmapDescriptor icon)
:設(shè)置標(biāo)記點的圖標(biāo)資源,可以是本地圖片、遠程圖片或內(nèi)置的圖標(biāo)樣式。使用BitmapDescriptorFactory
類創(chuàng)建BitmapDescriptor
對象,并將其作為參數(shù)傳入。 -
zIndex(int zIndex)
:設(shè)置標(biāo)記點的堆疊順序,值越大表示越靠前。 -
perspective(boolean perspective)
:設(shè)置標(biāo)記點的透視效果,即傾斜角度。true表示啟用透視效果,false表示不啟用。 -
draggable(boolean draggable)
:設(shè)置標(biāo)記點是否可拖拽。true表示可拖拽,false表示不可拖拽。 -
animateType(MarkerAnimateType animateType)
:設(shè)置標(biāo)記點的動畫效果類型??梢允褂?code>MarkerAnimateType枚舉類中的常量值,如MarkerAnimateType.none
、MarkerAnimateType.grow
、MarkerAnimateType.jump
、MarkerAnimateType.drop
。 -
getIcon()
:獲取標(biāo)記點的圖標(biāo)資源。 -
getPosition()
:獲取標(biāo)記點的經(jīng)緯度坐標(biāo)。 -
getZIndex()
:獲取標(biāo)記點的堆疊順序。 -
isPerspective()
:判斷標(biāo)記點是否啟用透視效果。 -
isDraggable()
:判斷標(biāo)記點是否可拖拽。 -
getAnimateType()
:獲取標(biāo)記點的動畫效果類型。
15.MapStatusUpdate類:
????????MapStatusUpdate類是百度地圖API中用于設(shè)置地圖狀態(tài)更新的類。通過該類,可以對地圖進行平移、縮放、旋轉(zhuǎn)等操作。?
-
newLatLng(LatLng latLng)
:創(chuàng)建一個以指定經(jīng)緯度為中心點的地圖狀態(tài)更新對象。 -
newLatLngBounds(LatLngBounds bounds)
:創(chuàng)建一個以指定經(jīng)緯度邊界為顯示范圍的地圖狀態(tài)更新對象。 -
newMapStatus(MapStatus mapStatus)
:創(chuàng)建一個以指定地圖狀態(tài)為基礎(chǔ)的地圖狀態(tài)更新對象。 -
newLatLngZoom(LatLng latLng, float zoom)
:創(chuàng)建一個以指定經(jīng)緯度為中心點、指定縮放級別的地圖狀態(tài)更新對象。 -
zoomTo(float zoom)
:創(chuàng)建一個將地圖縮放到指定級別的地圖狀態(tài)更新對象。 -
zoomBy(float amount)
:創(chuàng)建一個按照指定比例增加(正值)或減小(負值)地圖縮放級別的地圖狀態(tài)更新對象。 -
rotate(float rotate)
:創(chuàng)建一個以指定角度順時針旋轉(zhuǎn)地圖的地圖狀態(tài)更新對象。 -
overlook(float overlook)
:創(chuàng)建一個以指定角度俯視地圖的地圖狀態(tài)更新對象。 -
scrollBy(int offsetX, int offsetY)
:創(chuàng)建一個沿屏幕像素坐標(biāo)偏移地圖中心點的地圖狀態(tài)更新對象。
二、使用例子
例1:獲取當(dāng)前位置:
?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; // 經(jīng)度
TextView tv_Lon; // 緯度
TextView tv_Add; // 地址
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化地圖應(yīng)用
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, "沒有定位權(quán)限!", Toast.LENGTH_SHORT).show();
finish();
}else{
requestLocation();
}
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
private void requestLocation() {
// 定位前初始化
initLocation();
// 發(fā)起定位
mLocationClient.start();
}
private void initLocation() {
// LocationClient.setAgreePrivacy(true);
try {
mLocationClient = new LocationClient(getApplicationContext());
mLocationClient.registerLocationListener(new MyLocationListener());
// 定位客戶端操作
LocationClientOption option = new LocationClientOption();
// 設(shè)置掃描時間
option.setScanSpan(1000);
// 設(shè)置定位參數(shù)
option.setCoorType("bd09ll"); // 設(shè)置坐標(biāo)類型為百度經(jīng)緯度
option.setIsNeedAddress(true); // 設(shè)置需要獲取地址信息
// 設(shè)置定位模式
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
// option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving);
// option.setLocationMode(LocationClientOption.LocationMode.Device_Sensors);
option.setIsNeedAddress(true); // 設(shè)置需要地址信息
// 保存定位參數(shù)
mLocationClient.setLocOption(option);
} catch (Exception e) {
e.printStackTrace();
}
}
// 內(nèi)部類,百度位置監(jiān)聽器
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 定位或網(wǎng)格定位時
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);
// 以動畫更新方式,實現(xiàn)對手勢引起的地圖狀態(tài)的更新
mBaiduMap.animateMapStatus(update);
// 創(chuàng)建自定義標(biāo)記
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();
}
// 實現(xiàn)檢索地點功能
private void searchGeoCode(String address) {
mBaiduMap.clear(); // 清除標(biāo)記點
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); // 經(jīng)度
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="經(jīng)度:"
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>
?運行結(jié)果:
文章來源:http://www.zghlxwxcb.cn/news/detail-617277.html
未完待續(xù)。。。文章來源地址http://www.zghlxwxcb.cn/news/detail-617277.html
到了這里,關(guān)于安卓:百度地圖開發(fā)(超詳細)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!