天天看點

android高德地圖背景運作,Android手把手教你內建高德地圖

在上一篇部落格上,和大家分享了如何在Android中內建高德定位以及定位的基本使用。今天我們就來看看高德地圖在Android中如何使用吧。

同樣,我将本篇部落格的内容分為如下部分:

(1)添加高德SDK

(2)配置AndroidManifest檔案

(3)建立地圖

(4)控件互動

(5)方法互動

(6)地圖截圖

(7)添加Marker标記 上面我大緻分為了7部分,其中第(1)、(2)部分在高德定位的部落格中有說,本篇就不再多述。不同的地方就是我們需要添加地圖的SDK以及armebi檔案:

android高德地圖背景運作,Android手把手教你內建高德地圖
android高德地圖背景運作,Android手把手教你內建高德地圖

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);

android高德地圖背景運作,Android手把手教你內建高德地圖
android高德地圖背景運作,Android手把手教你內建高德地圖

(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,以上就是關于高德地圖的基本使用,最後我們看下效果(手機截圖):

android高德地圖背景運作,Android手把手教你內建高德地圖

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