详解Android中玩转高德地图
来源:互联网 发布:返利软件 知乎 编辑:程序博客网 时间:2024/06/05 22:36
在上一篇博客上,和大家分享了如何在Android中集成高德定位以及定位的基本使用。今天我们就来看看高德地图在Android中如何使用吧。
同样,我将本篇博客的内容分为如下部分:
(1)添加高德SDK
(2)配置AndroidManifest文件
(3)创建地图
(4)控件交互
(5)方法交互
(6)地图截图
(7)添加Marker标记
ok,下面正式进入地图的使用。
(1)创建地图:即在XML中添加即可。
<com.amap.api.maps.MapView
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其他的一些功能,大家可以去官网了解。高德地图
- 详解Android中玩转高德地图
- Android百度地图使用详解
- Android高德地图开发详解
- Android 高德地图入门详解
- [Android实例] Android中使用Google 地图实例详解
- android Gps 定位 百度地图集成方法详解-----编码
- Android Studio或Eclipse配置百度地图详解教程
- Android开发实现高德地图定位详解
- Android开发实现高德地图定位详解
- (转)Android开发实现高德地图定位详解
- Android 高德地图2.80新版地图开发详解(本地定位/地图显示/Mark标记/camera移动和缩放)
- 详解android studio百度地图开发教程(百度地图API使用教程)
- Android-地图
- android百度地图:地图定位
- js 图像地图详解!!!
- adnroid 地图服务 详解
- 百度地图实例详解
- 详解地图开发
- WCF调用异常
- HashMap的工作原理
- OJ 三角形面积
- !Java中Vector和ArrayList的源码中为什么要赋值给oldData
- 携程移动端架构演进与优化之路
- 详解Android中玩转高德地图
- Java Web学习总结(28)——Java Web项目MVC开源框架SSH和SSM比较
- for update or for update nowait 的区别
- 总结Oracle11g初始化数据库的步骤
- 烧脑电影:黑洞频率(Frequency)
- 如何配置使用 HTTP 严格传输安全(HSTS)
- centos7里nfs服务配置问题
- [知其然不知其所以然-39] Deploy thermald
- SQL SERVER 初始自动编号值,初始自增长值