高德地图SDK Android版开发 5 地图交互操作
前言
前文介绍了三个主题:创建显示地图;切换地图类型;显示定位。本文重点介绍地图交互操作及相关的类和接口。
-
高德地图支持多种地图交互操作,用户可以通过手势或控件进行地图操作,以实现更好的地图浏览体验。另一方面开发者通过代码实现特定业务场景的地图交互。
-
高德地图通过设定不同的地图状态,来改变地图视野。
-
最后是不属于地图操作的地图事件,但是也很重要。
- 比如地图加载完成事件,一些特定接口需要在地图加载完成后才能调用(在显示定位和本文均有提及)。
控件
控件介绍
高德地图提供一些基础的地图控件,包括LOGO、指南针、比例尺和缩放按钮和定位按钮。
控件 | 功能 | 默认显示 | 默认位置 |
---|---|---|---|
LOGO | 可设置显示相对位置和边距 (左下角,底部居中,右下角) |
显示 | 左下角 |
指南针 | 设置是否显示 | 不显示 | 左上角 |
比例尺 | 设置是否显示 | 不显示 | 左下角 |
缩放按钮 | 设置是否显示,可设置显示相对位置 (地图右边居中、地图右下角) |
显示 | 右下角 |
定位按钮 | 设置是否显示 | 不显示 | 右上角 |
接口
UiSettings
UiSettings
类用于操控地图控件,以定制自己想要的视图效果。UiSettings
类中地图控件的接口:
类型 | 方法 | 说明 |
---|---|---|
int | getLogoPosition () |
获取“高德地图”Logo的位置。 |
void | setLogoPosition (int position) |
设置“高德地图”Logo的位置。 |
void | setLogoLeftMargin (int pixels) |
设置Logo左边界距离屏幕左侧的边距。 |
void | setLogoBottomMargin (int pixels) |
设置Logo下边界距离屏幕底部的边距。 |
boolean | isCompassEnabled () |
返回指南针控件是否可见。 |
void | setCompassEnabled (boolean enabled) |
设置指南针是否可见。 |
boolean | isScaleControlsEnabled () |
返回比例尺控件是否可见。 |
void | setScaleControlsEnabled (boolean enabled) |
设置比例尺控件是否可见 |
boolean | isZoomControlsEnabled () |
返回缩放按钮是否可见。 |
void | setZoomControlsEnabled (boolean enabled) |
设置缩放按钮是否可见。 |
int | getZoomPosition () |
获取缩放按钮的位置。 |
void | setZoomPosition (int position) |
设置缩放按钮的位置。 |
boolean | isMyLocationButtonEnabled () |
返回定位按钮是否可见。 |
void | setMyLocationButtonEnabled (boolean enabled) |
设置定位按钮是否可见。 |
AMapOptions
AMapOptions
中的控件常量:
常量 | 说明 |
---|---|
LOGO_POSITION_BOTTOM_LEFT |
Logo位置(地图左下角) |
LOGO_POSITION_BOTTOM_CENTER |
Logo位置(地图底部居中) |
LOGO_POSITION_BOTTOM_RIGHT |
Logo位置(地图右下角) |
LOGO_MARGIN_LEFT |
LOGO边缘MARGIN(左边) |
LOGO_MARGIN_RIGHT |
LOGO边缘MARGIN(右边) |
LOGO_MARGIN_BOTTOM |
LOGO边缘MARGIN(底部) |
ZOOM_POSITION_RIGHT_CENTER |
缩放按钮位置常量(地图右边居中) |
ZOOM_POSITION_RIGHT_BUTTOM |
缩放按钮位置常量(地图右下角) |
示例代码
通过 AMap
类实现UiSettings
类对象的实例化:
UiSettings uiSettings = map.getUiSettings();
Logo
// 获取Logo位置
int position = uiSettings.getLogoPosition();
// 设置Logo位置
position = AMapOptions.LOGO_POSITION_BOTTOM_RIGHT;
uiSettings.setLogoPosition(position);
uiSettings.setLogoLeftMargin(10);
uiSettings.setLogoBottomMargin(10);
指南针
// 获取是否允许指南针
// boolean enabled = uiSettings.isCompassEnabled();
// 设置是否允许指南针
uiSettings.setCompassEnabled(true);
比例尺
// 获取比例尺控件是否显示
// boolean isShow = uiSettings.isScaleControlsEnabled();