在上一篇部落格上,和大家分享了如何在Android中內建高德定位以及定位的基本使用。今天我們就來看看高德地圖在Android中如何使用吧。
同樣,我将本篇部落格的内容分為如下部分:
(1)添加高德SDK
(2)配置AndroidManifest檔案
(3)建立地圖
(4)控件互動
(5)方法互動
(6)地圖截圖
(7)添加Marker标記 上面我大緻分為了7部分,其中第(1)、(2)部分在高德定位的部落格中有說,本篇就不再多述。不同的地方就是我們需要添加地圖的SDK以及armebi檔案:


ok,下面正式進入地圖的使用。
(1)建立地圖:即在XML中添加即可。
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
然後重寫Activity的生命周期方法,并在其中調用MapView相對的生命周期方法:
@Override
protected void onCreate() {
mMapView = (MapView) findViewById(R.id.mapview);
mMapView.onCreate(savedInstanceState);//此方法必須重寫
if(mMap == null) {
mMap = mMapView.getMap();
}
// 地圖模式可選類型:
// MAP_TYPE_NORMAL:普通模式(預設)
// MAP_TYPE_SATELLITE:衛星地圖模式
// MAP_TYPE_NIGHT:夜間模式
// mMap.setMapType(AMap.MAP_TYPE_SATELLITE);
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}
(2)控件互動:高德允許我們在地圖上顯示一些互動的控件。
mUiSettings = mMap.getUiSettings();
//控制定位到目前按鈕的顯示和隐藏
mUiSettings.setMyLocationButtonEnabled(true);
//控制縮放控件的顯示和隐藏。
mUiSettings.setZoomControlsEnabled(true);
//控制指南針的顯示和隐藏。
mUiSettings.setCompassEnabled(true);
//顯示比例尺控件:例如1:10Km
mUiSettings.setScaleControlsEnabled(true);


(3)方法互動:
1.改變地圖中心點
CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(
new CameraPosition(new LatLng(39.977290,116.337000),//新的中心點坐标
18, //新的縮放級别
30, //俯仰角0°~45°(垂直與地圖時為0)
0 偏航角 0~360° (正北方為0)
));
改變地圖中心點有兩種方式:
(1)平滑地移動地圖:第二個參數為移動時長
mMap.animateCamera(cameraUpdate, 1000, new AMap.CancelableCallback() {
@Override
public void onFinish() {
}
@Override
public void onCancel() {
}
});
(2)直接應用新的視圖
mMap.moveCamera(cameraUpdate);
2.改變地圖縮放級别
zoomTo是縮放地圖到指定的縮放級别,ZoomIn是縮放地圖到目前縮放級别的上一級
mMap.moveCamera(CameraUpdateFactory.zoomTo(17));//将地圖的縮放級别調整到17級
(4)地圖截取:高德提供了地圖截取功能,可以在截取後擷取到Bitmap
mMap.getMapScreenShot(new AMap.OnMapScreenShotListener() {
@Override
public void onMapScreenShot(Bitmap bitmap) {
}
@Override
public void onMapScreenShot(Bitmap bitmap, int i) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
if(null == bitmap){
return;
}
//儲存截圖
try {
FileOutputStream fos = new FileOutputStream(
Environment.getExternalStorageDirectory() + "/test_"
+ sdf.format(new Date()) + ".png");
boolean b = bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
try {
fos.flush();
} catch (IOException e) {
e.printStackTrace();
}
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
StringBuffer buffer = new StringBuffer();
if (b)
buffer.append("截屏成功 ");
else {
buffer.append("截屏失敗 ");
}
if (i != 0)
buffer.append("地圖渲染完成,截屏無網格");
else {
buffer.append( "地圖未渲染完成,截屏有網格");
}
//ToastUtil.show(ScreenShotActivity.this, buffer.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
(5)添加Marker标記。
LatLng latLng = new LatLng(39.906901,116.397972);
Marker marker = mMap.addMarker(new MarkerOptions()
.draggable(true)//可拖拽
.setFlat(true)//将Marker設定為貼地顯示,可以雙指下拉看效果
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_location_mark))//Marker圖示
.title("marker标記")//标題
.position(latLng));
//顯示InfoWindow
if(!marker.isInfoWindowShown()) {
marker.showInfoWindow();
}
//Marker點選事件
mMap.setOnMarkerClickListener(new AMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker arg0) {
return false;
}
});
ok,以上就是關于高德地圖的基本使用,最後我們看下效果(手機截圖):

相信大家對使用高德地圖有了更深的認識。關于地圖SDK其他的一些功能,大家可以去官網了解。