百度地圖開發定位與顯示Demo(Android)

來源:互聯網
上載者:User

百度地圖開發定位與顯示Demo(Android)

        百度地圖給我們提供了非常豐富的API供我們進行二次開發。百度地圖的SDK與定位SDK在今年6月份進行了更新。地圖更新為3.0,定點更新為4.2。百度說:這次更新對介面有了較大部分的調整,與之前版本不相容。本篇博文基於以上最新版本的API提供一個小例子:擷取自己當前的經緯度座標,並且顯示在地圖上。這裡只給出核心代碼,其他KEY的引入,地圖控制項的添加,許可權的聲明,定位服務的聲明可在百度地圖API官網(http://developer.baidu.com/map/sdkandev-download.htm)進行查看,稍候會附上完整例子的下載連結。


        代碼中的注釋已經比較詳細了,這裡就不做說明,參考官網很容易理解。

package org.zsl.android.map;import android.app.Activity;import android.os.Bundle;import android.util.Log;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.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.model.LatLng;public class MainActivity extends Activity {public MapView mapView = null;public BaiduMap baiduMap = null;// 定位相關聲明public LocationClient locationClient = null;//自訂表徵圖BitmapDescriptor mCurrentMarker = null;boolean isFirstLoc = true;// 是否首次定位public BDLocationListener myListener = new BDLocationListener() {@Overridepublic void onReceiveLocation(BDLocation location) {// map view 銷毀後不在處理新接收的位置if (location == null || mapView == null)return;MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此處設定開發人員擷取到的方向資訊,順時針0-360.direction(100).latitude(location.getLatitude()).longitude(location.getLongitude()).build();baiduMap.setMyLocationData(locData);//設定定位元據if (isFirstLoc) {isFirstLoc = false;LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16);//設定地圖中心點以及縮放層級//MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);baiduMap.animateMapStatus(u);}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 在使用SDK各組件之前初始化context資訊,傳入ApplicationContext// 注意該方法要再setContentView方法之前實現SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.main_activity);mapView = (MapView) this.findViewById(R.id.mapView); // 擷取地圖控制項引用baiduMap = mapView.getMap();//開啟定位元影像層baiduMap.setMyLocationEnabled(true);locationClient = new LocationClient(getApplicationContext()); // 執行個體化LocationClient類locationClient.registerLocationListener(myListener); // 註冊監聽函數this.setLocationOption();//設定定位參數locationClient.start(); // 開始定位// baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); // 設定為一般地圖// baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); //設定為衛星地圖// baiduMap.setTrafficEnabled(true); //開啟交通圖}// 三個狀態實現地圖生命週期管理@Overrideprotected void onDestroy() {//退出時銷毀定位locationClient.stop();baiduMap.setMyLocationEnabled(false);// TODO Auto-generated method stubsuper.onDestroy();mapView.onDestroy();mapView = null;}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();mapView.onResume();}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();mapView.onPause();}/** * 設定定位參數 */private void setLocationOption() {LocationClientOption option = new LocationClientOption();option.setOpenGps(true); // 開啟GPSoption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 設定定位元模式option.setCoorType("bd09ll"); // 返回的定位結果是百度經緯度,預設值gcj02option.setScanSpan(5000); // 設定發起定位請求的間隔時間為5000msoption.setIsNeedAddress(true); // 返回的定位結果包含地址資訊option.setNeedDeviceDirect(true); // 返回的定位結果包含手機機頭的方向locationClient.setLocOption(option);}}

完整源碼:http://download.csdn.net/detail/u012909091/7601647


(本文地址:http://blog.csdn.net/zhshulin/article/details/37495575)









聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.