一、下載百度地圖SDKphp
SDK能夠拆分下載,須要使用那一部分功能就下載相應包含的SDK,以下圖java
核心的的jar 和so包,放在工程中的libs目錄下android
註冊百度帳號申請key,格式以下:sha1值+";"+包名。api
包名指的是AndroidManifest.xml 中定義的名稱 ,並不是工程包名安全
(1)在application中添加開發密鑰app
<application <meta-dataeclipse
android:name="com.baidu.lbsapi.API_KEY"ide
android:value="申請的key" />工具
</application>佈局
(2)添加所需權限
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
(3)添加百度地圖服務
在mainfest的application標籤中配置地圖服務
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote" >
</service>
(4)在佈局xml文件中添加地圖控件
(5)在應用程序建立時初始化 SDK引用的Context 全局變量
public class MainActivity extends Activity { MapView mMapView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //在使用SDK各組件以前初始化context信息,傳入ApplicationContext //注意該方法要再setContentView方法以前實現 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); //獲取地圖控件引用 mMapView = (MapView) findViewById(R.id.bmapView); } @Override protected void onDestroy() { super.onDestroy(); //在activity執行onDestroy時執行mMapView.onDestroy(),實現地圖生命週期管理 mMapView.onDestroy(); } @Override protected void onResume() { super.onResume(); //在activity執行onResume時執行mMapView. onResume (),實現地圖生命週期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause(); //在activity執行onPause時執行mMapView. onPause (),實現地圖生命週期管理 mMapView.onPause(); } }
運行後就能夠拿到百度地圖圖層
一、開啓定位圖層
// 開啓定位圖層
mBaiduMap.setMyLocationEnabled(true);
二、開啓定位功能
mLocClient = new LocationClient(context);
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);// 打開gps
option.setCoorType("bd09ll"); // 設置座標類型
option.setScanSpan(1000);
mLocClient.setLocOption(option);
mLocClient.start();
三、重寫監聽器
繼承BDLocationListener監聽器,重寫onReceiveLocation方法,這樣就能夠拿到包含在BDLocation中的定位信息,具體參看BDLocation類
四、定位當前位置
/**
* 設置地圖操做點中心
*/
public void setCenterPosition(Point p){
LatLng ll = new LatLng(Double.parseDouble(p.getX()),
Double.parseDouble(p.getY()));
MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().target(ll).build());
//mBaiduMap.setMapStatus(u);
//已動畫的方式切換
mBaiduMap.animateMapStatus(u);
}
利用工廠類,更新地圖狀態,顯示當前位置。
五、利用百度地圖標繪
在百度地圖上標繪基本圖形,可查看相關API文檔。
在本項目中,標繪了圓、線、點。(OverlayOptions 接口類,通常利用其子類繪製)
一、標繪線
OverlayOptions ooPolyline = new PolylineOptions().width(width)
.color(color).points(points);
mBaiduMap.addOverlay(ooPolyline);
二、標繪圓
LatLng llCircle = new LatLng(Double.parseDouble(centerPoint.getX()),
Double.parseDouble(centerPoint.getY()));
OverlayOptions ooCircle = new CircleOptions().fillColor(fillColor)
.center(llCircle).stroke(new Stroke(5, color))
.radius(rad);
mBaiduMap.addOverlay(ooCircle);
三、標繪點(並不是基本方法)
LatLng ll = new LatLng(Double.parseDouble(centerPoint.getX()),
Double.parseDouble(centerPoint.getY()));
OverlayOptions ooA = new MarkerOptions().position(ll).icon(bd)
.zIndex(9);
return (Marker) mBaiduMap.addOverlay(ooA);
要想使用百度地圖sdk,就必須申請一個百度地圖的api key。申請流程挺簡單的。
首先註冊成爲百度的開發者,而後打開http://lbsyun.baidu.com/apiconsole/key這個網址,添加應用:
建立應用最重要的一步是【安全碼】。安全碼是有【數字簽名】和【;】和【包名】組成。包名就是你所建立的項目的包的結構,是指AndroidManifest.xml中的manifest標籤下的package的值。
數字簽名指Android的簽名證書的SHA1值。
獲取數字簽名有兩種方法:
1. 第一種方法:使用eclipse查看。
打開eclipse的preferences菜單,在Android下的【Build】中能夠看到SHA1的值,以下圖:
2. 第二種方法:使用keytool工具(jdk自帶)查看。
在控制檯下,輸入【cd .android】,而後輸入【keytool -list -v -keystore debug.keystore】回車,而後提示你輸入【祕鑰庫口令】,輸入【android】回車而後就會顯示SHA1的值。
數字簽名搞定了,而後建立應用就ok了。建立完成以後,應用列表中會顯示相應的AK,也就是api key。
打開http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download網址下載sdk,能夠所有下載,也能夠自定義下載。從V2.3.0以後的版本,SDK的開發包以可定製的形式提供下載,用戶能夠根據本身的項目須要勾選相應的功能下載對應的SDK開發包。
1. 將開發包中的jar包和so文件添加到libs文件下。
2. 在AndroidManifest.xml中添加開發祕鑰和所需權限。
[java] view plain copy
權限:
[java] view plain copy
3. 在佈局文件中添加地圖控件:
[java] view plain copy
4. 在應用程序建立時初始化SDK引用的Context全局變量。
[java] view plain copy
這裏須要注意一下:initialize方法中必須傳入的是ApplicationContext,傳入this,或者MAinActivity.this都不行,否則會報運行時異常,因此百度建議把該方法放到Application的初始化方法中。
而後重寫activity的生命週期的幾個方法來管理地圖的生命週期。在activity的onResume、onPause、onDestory方法中分別執行mapview的onReusme、onPause、onDestory方法。
[java] view plain copy
完成以上步驟,此時就能夠完成一個簡單的」Hello Map「程序了。
百度地圖將地圖的類型分爲兩種:普通矢量地圖和衛星圖。
[java] view plain copy
[java] view plain copy
熱力圖就是以特殊高亮的形式顯示訪客熱衷的頁面區域和訪客所在的地理區域的圖示。通俗來講就是顯示地圖上某一塊區域的人的密集程度。相似於下圖所示:
[java] view plain copy