android高德地图后台运行,Android手把手教你集成高德地图
之前的一篇博客中,在上一篇博客上
同样,我将本篇博客的内容分为如下部分:
(1)添加高德SDK
(2)配置AndroidManifest文件
(3)创建地图
(4)控件交互
(5)方法交互
(6)地图截图
插入Marker标记


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.改变地图缩放级别
zooming to refers to scaling the map to a specified zoom level, while zooming in represents scaling the map to one level higher than the current zoom level.
updateScene(CameraUpdateFactory.zoomTo(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其余的功能信息,请访问官网获取详细资料。
