其他文章:
安卓百度離線地圖的下載以及使用
安卓百度地圖(一)定位功能的實現(xiàn)宵蕉、周邊POI的檢索
安卓百度地圖(三)繪制點酝静、線等圖層信息
安卓百度地圖(四)城市,周邊羡玛,區(qū)域檢索
安卓百度地圖(五)百度地圖路線規(guī)劃
安卓百度地圖(六)鷹眼軌跡的上傳别智,歷史軌跡的顯示
安卓百度地圖(七)地理圍欄的建立與使用
本文主要針對百度地圖的顯示,以及離線地圖的下載使用
一 地圖SDk簡介
百度地圖SDK是一套應(yīng)用程序接口稼稿, 通過調(diào)用地圖SDK接口薄榛,開發(fā)者可以輕松訪問百度地圖的服務(wù)和數(shù)據(jù),構(gòu)建功能豐富让歼、交互性強(qiáng)的地圖類應(yīng)用程序敞恋。
二 地圖顯示
XML:
<com.baidu.mapapi.map.TextureMapView
android:id="@+id/mTexturemap"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.baidu.mapapi.map.TextureMapView>
Java:
注意:不要忘記SDKInitializer.initialize(getApplicationContext());
private TextureMapView mMapView;
private BaiduMap mBaiduMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_map);
mMapView = (TextureMapView) findViewById(R.id.mTexturemap);
mBaiduMap = mMapView.getMap();
}
2.1 切換地圖類型
百度地圖SDK為您提供了3種類型的地圖資源(普通矢量地圖、衛(wèi)星圖和空白地圖)谋右,BaiduMap 類提供圖層類型常量硬猫,詳細(xì)如下:
類型名稱 | 說明 |
---|---|
MAP_TYPE_NORMAL | 普通地圖(包含3D地圖) |
MAP_TYPE_SATELLITE | 衛(wèi)星圖 |
MAP_TYPE_NONE | 空白地圖 |
通過mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
可以切換地圖類型
通過mBaiduMap.setBaiduHeatMapEnabled(true)
開啟百度城市熱力圖
三 定位顯示
注意:設(shè)置返回的坐標(biāo)類型為bd09ll
,否則無法直接在地圖上顯示
LocationClientOption mOption = new LocationClientOption();
mOption.setCoorType("bd09ll");
mLocationClient.setLocOption(mOption);
3.1 設(shè)置中心點改执,顯示比例
開啟定位后啸蜜,然后在得到保存地理位置信息的bdLocation后,我們進(jìn)入地圖通常有一個中心點辈挂,百度地圖默認(rèn)為北京天安門衬横。因為我們這里需要顯示定位當(dāng)當(dāng)前位置,所以需要自己設(shè)置中心點终蒂,以及地圖顯示比例蜂林。
因為我們只需要在首次進(jìn)入地圖時遥诉,設(shè)置中心點:
private boolean is_First_locate = true;
if (is_First_locate) {
is_First_locate = false;
LatLng ll = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
//設(shè)置縮放中心點;縮放比例噪叙;
builder.target(ll).zoom(18.0f);
//給地圖設(shè)置狀態(tài)
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
}
3.2 定位當(dāng)前位置
3.2.1 開啟定位圖層
mBaiduMap.setMyLocationEnabled(true);
3.2.2 根據(jù)經(jīng)緯度定位到當(dāng)前位置
MyLocationData locationData = new MyLocationData.Builder()
//設(shè)置精度圈
.accuracy(bdLocation.getRadius())
//設(shè)置方向
.direction(bdLocation.getDirection())
.latitude(bdLocation.getLatitude())
.longitude(bdLocation.getLongitude())
.build();
mBaiduMap.setMyLocationData(locationData);
3.2.3 自定義圖標(biāo)突那,定位模式等
三種定位模式:
類型名稱 | 說明 |
---|---|
FOLLOWING | 跟隨態(tài),保持定位圖標(biāo)在地圖中心 |
NORMAL | 普通態(tài):更新定位數(shù)據(jù)時不對地圖做任何操作 |
COMPASS | 羅盤態(tài)构眯,顯示定位方向圈愕难,保持定位圖標(biāo)在地圖中心 |
//設(shè)置定位模式(遇到一個問題,設(shè)置定位模式為非普通太出現(xiàn)問題)
MyLocationConfiguration.LocationMode mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL;
//自定義定位圖標(biāo)
BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory .fromResource(R.drawable.arrow);
//保存自定義樣式(定位模式惫霸,是否開啟方向猫缭,自定義圖標(biāo)樣式,自定義精度圈填充顏色壹店,自定義精度圈邊框顏色)
MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker,0xAAFFFF88,0xAA00FF00);
mBaiduMap.setMyLocationConfiguration(config);//設(shè)置自定義樣式
四 離線的圖的下載使用
關(guān)于百度地圖的離線下載及使用請移步安卓百度離線地圖的下載以及使用
五 地圖交互
5.1 地圖控件
百度地圖logo的顯示位置猜丹、指南針的顯隱、比例尺的顯隱硅卢、縮放按鈕的顯隱射窒。
//地圖Logo默認(rèn)在左下角顯示,不可以移除,地圖Logo不允許遮擋.
mMapView.setLogoPosition(LogoPosition.logoPostionleftBottom);
//可通過以下方法可以設(shè)置地圖邊界區(qū)域将塑,來避免地圖Logo遮擋脉顿。
mBaiduMap.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
//指南針默認(rèn)為開啟狀態(tài),可以關(guān)閉顯示 点寥。設(shè)置方法如下:
mUiSettings = mBaiduMap.getUiSettings();
//實例化UiSettings類對象
mUiSettings.setCompassEnabled(enable);
//比例尺默認(rèn)為開啟狀態(tài)艾疟,可以關(guān)閉顯示。設(shè)置方法如下:
mMapView. showScaleControl(enable)敢辩;
//可通過mMapView.getMapLevel獲取當(dāng)前地圖級別下比例尺所表示的距離大小蔽莱。
mBaiduMap.setMaxAndMinZoomLevel(float max, float min);
//通過如下方式控制縮放按鈕是否顯示:
mMapView. showZoomControls(enable);
5.2 地圖手勢
地圖平移的開關(guān)戚长、縮放手勢的開關(guān)盗冷、3D功能的開關(guān)、地圖旋轉(zhuǎn)的開關(guān)同廉、禁止所有手勢的開關(guān)仪糖。
//控制是否啟用或禁用平移的功能,默認(rèn)開啟mUisettings. setScrollGesturesEnabled(enabled);
//控制是否啟用或禁用縮放手勢恤溶,默認(rèn)開啟mUisettings. setZoomGesturesEnabled(enabled);
//控制是否啟用或禁用俯視(3D)功能乓诽,默認(rèn)開啟
mUisettings. setOverlookingGesturesEnabled(enabled);
//控制是否啟用或禁用地圖旋轉(zhuǎn)功能帜羊,默認(rèn)開啟
mUisettings .setRotateGesturesEnabled(enabled);
//控制是否一并禁止所有手勢咒程,默認(rèn)關(guān)閉。
mUisettings .setAllGesturesEnabled(enabled)
5.3 地圖事件交互
百度地圖事件交互:key驗證時間監(jiān)聽讼育、廣播監(jiān)聽帐姻、地圖事件監(jiān)聽(地圖狀態(tài)改變稠集、各種手勢、單擊饥瓷、雙擊截屏)等剥纷。詳情查看官網(wǎng)百度地圖事件交互
下面做簡單介紹:
5.3.1 單擊事件
OnMapClickListener listener = new OnMapClickListener() {
/**
* 地圖單擊事件回調(diào)函數(shù)
* @param point 點擊的地理坐標(biāo)
*/
public void onMapClick(LatLng point){
}
/**
* 地圖內(nèi) Poi 單擊事件回調(diào)函數(shù)
* @param poi 點擊的 poi 信息
*/
public boolean onMapPoiClick(MapPoi poi){
}
};
5.3.2 雙擊事件
OnMapDoubleClickListener listener = new OnMapDoubleClickListener() {
/**
* 地圖雙擊事件監(jiān)聽回調(diào)函數(shù)
* @param point 雙擊的地理坐標(biāo)
*/
public void onMapDoubleClick(LatLng point){
}
};
5.3.3 地圖長按事件監(jiān)聽接口:
OnMapLongClickListener listener = new OnMapLongClickListener() {
/**
* 地圖長按事件監(jiān)聽回調(diào)函數(shù)
* @param point 長按的地理坐標(biāo)
*/
public void onMapLongClick(LatLng point){
}
};
5.3.4 地圖 Marker 覆蓋物點擊事件監(jiān)聽接口:
OnMarkerClickListener listener = new OnMarkerClickListener() {
/**
* 地圖 Marker 覆蓋物點擊事件監(jiān)聽函數(shù)
* @param marker 被點擊的 marker
*/
public boolean onMarkerClick(Marker marker){
}
};
5.3.5 地圖定位圖標(biāo)點擊事件監(jiān)聽接口:
OnMyLocationClickListener listener = new OnMyLocationClickListener() {
/**
* 地圖定位圖標(biāo)點擊事件監(jiān)聽函數(shù)
*/
public boolean onMyLocationClick(){
}
};
5.3.6 地圖截屏回調(diào)接口:
SnapshotReadyCallback callback = new SnapshotReadyCallback() {
/**
* 地圖截屏回調(diào)接口
* @param snapshot 截屏返回的 bitmap 數(shù)據(jù)
*/
public void onSnapshotReady(Bitmap snapshot){
}
};
5.4 地圖方法交互
百度地圖方法交互:改變地圖縮放等級、設(shè)置地圖操作區(qū)距屏幕的距離呢铆、設(shè)置地圖顯示范圍晦鞋、 改變地圖類型和控件顯示狀態(tài)、改變地圖手勢的中心點棺克、隱藏底圖標(biāo)注等悠垛。詳情查看官網(wǎng)百度地圖事件交互
本文主要做于收集整理筆記使用,關(guān)于文章的源碼娜谊,請移步我的GitHub