amap-jsapi-v2-types
Version:
高德 JSAPI v2 类型声明文件
562 lines (553 loc) • 19.6 kB
TypeScript
import type { Bounds, BoundsLike } from './common/Bounds';
import type Size from './common/Size';
import type { Pixel, PixelLike } from './common/Pixel';
import type Event from './common/Event';
import type { LngLat, LngLatLike } from './common/LngLat';
import type BaseLayer from './layers/BaseLayer';
import type VectorLayer from './layers/VectorLayer';
import type Overlay from './overlays/Overlay';
import type { Control } from './controls/Control';
export type MapStates = Record<string, any> & {
dragEnable: boolean;
zoomEnable: boolean;
doubleClickZoom: boolean;
keyboardEnable: boolean;
jogEnable: boolean;
scrollWheel: boolean;
zoomSpeed: number;
animateEnable: boolean;
touchZoomCenter: number;
touchZoom: boolean;
pitchEnable: boolean;
rotateEnable: boolean;
showBuildingBlock?: boolean;
isHotspot: boolean;
mapstyleUrl: string;
features?: string | string[];
allBubble: boolean;
pickWhenMoving: boolean;
};
export type MapOptions = Partial<MapStates> & {
/** 初始中心经纬度 */
center?: LngLatLike;
/** 地图显示的缩放级别,可以设置为浮点数;若center与level未赋值,地图初始化默认显示用户所在城市范围。 */
zoom?: number;
/** 地图顺时针旋转角度,取值范围 [0-360],默认值:0 */
rotation?: number;
/** 俯仰角度,默认 0,最大值根据地图当前 zoom 级别不断增大,2D地图下无效。 */
pitch?: number;
/** 地图视图模式, 默认为‘2D’,可选’3D’,选择‘3D’会显示 3D 地图效果。 */
viewMode?: '2D' | '3D';
/** 设置地图上显示的元素种类, 支持'bg'(地图背景)、'point'(POI点)、'road'(道路)、'building'(建筑物) */
features?: string[];
/**
* 地图图层数组,数组可以是图层中的一个或多个,默认为普通二维地图。
* 当叠加多个图层时,普通二维地图需通过实例化一个 TileLayer 类实现。
* 如果你希望创建一个默认底图图层,使用 AMap.createDefaultLayer()
**/
layers?: BaseLayer[];
/** 地图显示的缩放级别范围, 默认为 [2, 20] ,取值范围 [2 ~ 20] */
zooms?: [number, number];
/** 是否展示地图文字和 POI 信息。 */
showLabel?: boolean;
/** 地图默认鼠标样式。参数 defaultCursor 应符合 CSS 的 cursor 属性规范。 */
defaultCursor?: string;
/** 设置地图的显示样式,目前支持两种地图样式 */
mapStyle?: string;
/** 地图楼块的侧面颜色 */
wallColor?: string | number[];
/** 地图楼块的顶面颜色 */
roofColor?: string | number[];
/** 是否展示地图 3D 楼块,默认 true */
showBuildingBlock?: boolean;
/** 是否自动展示室内地图,默认是 false */
showIndoorMap?: boolean;
/** 天空颜色,3D 模式下带有俯仰角时会显示 */
skyColor?: string | number[];
/**
* 为 Map 实例指定掩模的路径,各图层将只显示路径范围内图像,3D视图下有效。 格式为一个经纬度的一维、二维或三维数组。
*
* @waring 经验证后,实际能工作的数据类型并不与官方文档描述一致。
* 以下验证有效 `LngLatLike[][][]`,`[number, number][][]`,`LngLat[][][]`
**/
mask?: LngLatLike[][][] | LngLatLike[][] | LngLatLike[];
};
export type MapEventType =
/** 地图容器尺寸改变事件 **/
| 'resize'
/** 地图资源加载完成后触发事件 **/
| 'complete'
| 'click'
| 'dblclick'
/** 地图平移时触发事件 **/
| 'mapmove'
| 'hotspotclick'
| 'hotspotover'
| 'hotspotout'
| 'movestart'
| 'moveend'
| 'zoomchange'
| 'zoomstart'
| 'zoomend'
| 'rotatechange'
| 'rotatestart'
| 'mousemove'
| 'mousewheel'
| 'mouseover'
| 'mouseout'
| 'mouseup'
| 'mousedown'
| 'rightclick'
| 'dragstart'
| 'dragging'
| 'dragend'
| 'touchstart'
| 'touchmove'
| 'touchend'
/** 支持自行扩展 **/
| string;
export declare class Map extends Event<MapEventType> {
constructor(ele: string | HTMLElement, opts?: MapOptions);
/**
* 获取地图中心点经纬度坐标值。
* @returns {LngLat} 中心点
**/
getCenter(): LngLat;
/**
* 设置中心点
* @param {LngLatLike} center 中心点经纬度
* @param {boolean} immediately 是否立即过渡到目标位置
* @param {number} duration 如果使用动画过度,动画过度的时长控制,单位 ms,默认值是内部自动计算的一个动态值。
**/
setCenter(center: LngLatLike, immediately?: boolean, duration?: number): void;
/**
* 获取当前地图视图范围/可视区域。
* @returns {Bounds} 边界经纬度
**/
getBounds(): Bounds;
/**
* 指定当前地图显示范围,参数 bounds 为指定的范围
* @param {BoundsLike} bounds 经纬度范围
**/
setBounds(bounds: BoundsLike): void;
/**
* 获取Map的限制区域
* @returns {Bounds | undefined}
**/
getLimitBounds(): Bounds | undefined;
/**
* 设置 Map 的限制区域,设定区域限制后,传入参数为限制的 Bounds。
* 地图仅在区域内可拖拽
* @exampleUrl https://lbs.amap.com/api/jsapi-v2/example/map/limit-map-show-range
* @param {BoundsLike} bounds
**/
setLimitBounds(bounds: BoundsLike): void;
/**
* 清除 Map 的限制区域
**/
clearLimitBounds(): void;
/**
* 返回地图对象的容器
* @returns {HTMLElement}
**/
getContainer(): HTMLElement;
/**
* 获取地图容器尺寸,单位:像素
* @returns {Size}
**/
getSize(): Size;
/**
* 获取地图缩放等级范围
* @returns {[number, number]}
**/
getZooms(): [number, number];
/**
* 设置地图缩放等级范围
* @param {[number, number]} zooms
**/
setZooms(zooms: [number, number]): void;
/**
* 获取当前地图缩放级别, 默认取值范围为[2, 20]
* @param {number} digits zoom 级别的小数位精度,缺省为2
**/
getZoom(digits?: number): number;
/**
* 设置地图显示的缩放级别,参数 zoom 可设范围受 getZooms() 结果影响
* @param {number} zoom
* @param {boolean} immediately
* @param {number} duration
**/
setZoom(zoom: number, immediately?: boolean, duration?: number): void;
/**
* 地图缩放至指定级别并以指定点为地图显示中心点
* @param {number} zoom 缩放等级
* @param {LngLatLike} center 地图中心点位置
* @param {boolean} immediately 是否立即过渡到目位置
* @param {number} duration 如果使用动画过度,动画过度的时长控制,单位 ms,默认值是内部自动计算的一个动态值。
**/
setZoomAndCenter(
zoom: number,
center: LngLatLike,
immediately?: boolean,
duration?: number,
): void;
/**
* 地图放大一级显示
**/
zoomIn(): void;
/**
* 地图缩小一级显示
**/
zoomOut(): void;
/**
* 根据地图上添加的覆盖物分布情况,自动缩放地图到合适的视野级别,参数均可缺省。
*
* @param {VectorLayer | Overlay[]} overlays 覆盖物
* @param {boolean} immediately 是否立即过渡. 默认 false
* @param {number[]} avoid 四周边距,上、下、左、右。默认:[60, 60, 60, 60]
* @param {number} maxZoom 最大 zoom 级别。默认:getZooms()[1]
* @returns {Bounds} bounds 新的地图视口范围.
*
* @example
* var map = new AMap.Map({
* zoom: 10,
* });
* var marker = new AMap.Marker({
* map: map,
* position: [112, 30],
* });
* var marker1 = new AMap.Marker({
* map: map,
* position: [110, 31],
* });
* map.setFitView(
* [marker, marker1], // 覆盖物数组
* false, // 动画过渡到制定位置
* [60, 60, 60, 60], // 周围边距,上、下、左、右
* 10, // 最大 zoom 级别
* );
**/
setFitView(
overlays?: VectorLayer | Overlay[],
immediately?: boolean,
avoid?: number[],
maxZoom?: number,
): Bounds | undefined;
/**
* 根据 overlays 计算出合适的中心点和 zoom 级别
*
* @param {Overlay[]} overlays 覆盖物
* @param {number[]} avoid 四周边距,上、下、左、右
* @param {number} maxZoom 最大 zoom 级别
* @returns {[number, LngLat]} zoom 级别和中心点经纬度
**/
getFitZoomAndCenterByOverlays(
overlayList: Overlay[],
avoid?: number[],
maxZoom?: number,
): [number, LngLat] | undefined;
/**
* 根据 bounds 计算出合适的中心点和 zoom 级别
*
* @param {BoundsLike} bounds 需要计算的范围
* @param {number[]} avoid 四周边距,上、下、左、右
* @param {number} maxZoom 最大 zoom 级别
* @returns {[number, LngLat]} [zoom , 中心点经纬度]
**/
getFitZoomAndCenterByBounds(
bounds: BoundsLike,
avoid?: number[],
maxZoom?: number,
): [number, LngLat] | undefined;
/**
* 获取地图当前俯仰角
**/
getPitch(): number;
/**
* 设置地图俯仰角。
* @warning 3D 模式下才生效
* @param {number} pitch 角度
* @param {boolean} immediately 是否立即过渡到目标位置
* @param {number} duration 如果使用动画过度,动画过度的时长控制,单位 ms,默认值是内部自动计算的一个动态值。
**/
setPitch(pitch: number, immediately?: boolean, duration?: number): void;
/**
* 获取地图顺时针旋转角度, 范围: [0 ~ 360]
* @returns {number}
**/
getRotation(): number;
/**
* 设置地图顺时针旋转角度, 旋转原点为地图容器中心点, 取值范围: [0 ~ 360]
* @param {number} rotation 旋转角度
* @param {boolean} immediately 是否立即过渡到目标位置
* @param {number} duration 动画过度的时长控制,单位 ms,默认值是内部自动计算的一个动态值。
**/
setRotation(
rotation: number,
immediately?: boolean,
duration?: number,
): void;
/**
* 获取当前地图状态信息,包括是否可鼠标拖拽移动地图、地图是否可缩放、地图是否可旋转(rotateEnable)、 是否可双击放大地图、是否可以通过键盘控制地图旋转(keyboardEnable)等
* @returns {MapStates} 地图状态信息映射集合
**/
getStatus(): MapStates;
/**
* 设置当前地图显示状态
* @exampleUrl https://lbs.amap.com/api/javascript-api/example/map/set-map-status
* @param {MapStates} opts 地图状态值映射集合
**/
setStatus(opts: MapStates): void;
/**
* 获取地图默认鼠标指针样式
* @returns {string} 地图鼠标指针样式
**/
getDefaultCursor(): string;
/**
* 设置地图默认鼠标指针样式
* @param {string} cursor 设置鼠标指针默认样式
**/
setDefaultCursor(cursor: string): void;
/**
* 获取地图显示样式
* @returns {string} 例如:'amap://styles/normal'
**/
getMapStyle(): string;
/**
* 设置地图的显示样式,目前支持两种地图样式:
* - 第一种:自定义地图样式,如 "amap://styles/d6bf8c1d69cea9f5c696185ad4ac4c86" 可前往地图自定义平台定制自己的个性地图样式;
* - 第二种:官方样式模版,如 "amap://styles/grey"。
*
* 其他模版样式及自定义地图的使用说明见:
* https://lbs.amap.com/api/jsapi-v2/guide/map/map-style
*
* @exampleUrl https://lbs.amap.com/api/jsapi-v2/example/personalized-map/set-theme-style
* @param {string} value
**/
setMapStyle(value: string): void;
/**
* 获取地图中心点所在区域,回调函数返回对象属性分别对应为{省,市,区/县}
* @param {Function} cb 查询成功的回调函数
* @param {LngLatLike} lnglat 查询的经纬度
* @returns
**/
getCity(cbk: (result: any) => void, lnglat: LngLatLike): void;
/**
* 按照行政区名称或adcode来设置地图显示的中心点。
* 行政区名称支持中国、省、市、区/县名称,如遇重名的情况,会按城市编码表顺序返回第一个。
* adcode 请在城市编码表中查询。
* @warning 建议 `center/setCenter()` 和 `setCity()` 不要同时使用,如一起使用将以 `setCity()` 作为最后结果。
* @param {string} cityName 城市名称
**/
setCity(cityName: string): void;
/**
* 获取当前地图比例尺。表示当前屏幕距离一米代表实际距离多少米
* @param {number} dpi
* @returns {number} 比例尺的值
**/
getScale(dpi: number): number;
/**
* 添加图层到地图上
* @param {BaseLayer} layer 地图图层对象
**/
addLayer(layer: BaseLayer): void;
/**
* 从地图上移除图层
* @param {BaseLayer} layer 地图图层
**/
removeLayer(layer: BaseLayer): void;
/**
* 获取地图图层数组,数组为一个或多个图层
* @returns {BaseLayer[]} 地图图层数组
**/
getLayers(): BaseLayer[];
/**
* 将多个图层一次替代地图上原有图层,会移除地图原有图层
* @param {BaseLayer[]} layers 地图图层数组
**/
setLayers(layers: BaseLayer[]): void;
/**
* 添加覆盖物/图层。
*
* @param {Overlay | BaseLayer | Array<Overlay | BaseLayer>} features 覆盖物对象或者数组
*
**/
add(features: Overlay | BaseLayer | Array<Overlay | BaseLayer>): void;
/**
* 删除覆盖物/图层。
* @param {Overlay | BaseLayer | Array<Overlay | BaseLayer>} features 覆盖物对象或者数组
*
**/
remove(features: Overlay | BaseLayer | Array<Overlay | BaseLayer>): void;
/**
* 添加控件。如:ToolBar、OverView、Scale等
* @param {Control} control 控件对象
**/
addControl(control: Control): void;
/**
* 移除地图上的指定控件
* @param {Control} control 控件对象
**/
removeControl(control: Control): void;
/**
* 返回添加的覆盖物对象,可选类型包括 marker、circle、polyline、polygon;
* 返回结果不包含官方覆盖物等,比如定位marker,周边搜索圆等
*
* @exampleUrl https://lbs.amap.com/api/jsapi-v2/example/common/get-all-overlays/
* @param {string} type 可选,覆盖物类型
* @returns {Overlay[]} 覆盖物数组
**/
getAllOverlays(type?: string): any[];
/**
* 获取地图显示元素种类
* @returns {string[]} 返回 features 的集合,可能有 bg(地图背景)、point(兴趣点)、road(道路)、building(建筑物)
**/
getFeatures(): string | string[] | undefined;
/**
* 设置地图上显示的元素种类,支持 bg(地图背景)、point(兴趣点)、road(道路)、building(建筑物)
*
* @exampleUrl https://lbs.amap.com/api/jsapi-v2/example/personalized-map/set-map-cotent/
* @param {string[]} features 类型数组
*
**/
setFeatures(features: string[]): void;
/**
* 删除地图上所有的覆盖物
**/
clearMap(): void;
/**
* 清除地图上的信息窗体。
**/
clearInfoWindow(): void;
/**
* 销毁地图对象
**/
destroy(): void;
/**
* 地图中心点平移至指定点位置
*
* @param {LngLatLike} lnglat
* @param {number} duration 动画过度的时长控制,单位 ms,默认值是内部自动计算的一个动态值。
**/
panTo(lnglat: LngLatLike, duration?: number): void;
/**
* 以像素为单位, 沿 x 方向和 y 方向移动地图, x 向右为正, y 向下为正
*
* @param {number} x 横轴方向
* @param {number} y 纵轴方向
* @param {number} duration 如果使用动画过度,动画过度的时长控制,单位 ms,默认值是内部自动计算的一个动态值。
**/
panBy(x: number, y: number, duration?: number): void;
/**
* 经纬度转莫卡托坐标(单位:米)
* @param {LngLatLike} lnglat 经纬度
* @returns {[number, number]} 莫卡托坐标(单位:米)
**/
lngLatToCoords(lnglat: LngLatLike): [number, number];
/**
* 莫卡托坐标(单位:米)转经纬度
* @param {([number, number])} coords 莫卡托坐标(单位:米)
* @returns {LngLat} 经纬度
**/
coordsToLngLat(coords: [number, number]): LngLat;
/**
* 地图经纬度坐标转为地图容器像素坐标
*
* @exampleUrl https://lbs.amap.com/api/jsapi-v2/example/axis/transformate-between-coordinates-of-lnglat-and-map-container/
* @param {LngLatLike} lnglat 经纬度
* @returns {Pixel} 容器像素坐标
**/
lngLatToContainer(lnglat: LngLatLike): Pixel;
/**
* 地图容器坐标转换成经纬度
*
* @exampleUrl https://lbs.amap.com/api/jsapi-v2/example/axis/transformate-between-coordinates-of-lnglat-and-map-container/
* @param {PixelLike} pixel 容器像素坐标
* @returns {LngLat} 转换成功的经纬度
**/
containerToLngLat(pixel: PixelLike): LngLat;
/**
* 莫卡托(单位:米)转成地图容器坐标
* @param {[number, number]} coord 莫卡托坐标(单位:米)
* @returns {[number, number]} 容器像素坐标
*
**/
coordToContainer(coord: [number, number]): [number, number];
/**
* 地图容器坐标转成莫卡托(单位:米)
*
* @param {PixelLike} pixel 容器像素坐标
* @returns {[number, number]} 莫卡托坐标(单位:米)
**/
containerToCoord(pixel: PixelLike): [number, number];
/**
* 平面地图像素坐标转换为地图经纬度坐标
*
* @param {PixelLike} pixel 像素坐标
* @param {number} zoom 某个地图级别
* @returns {LngLat}
**/
pixelToLngLat(pixel: PixelLike, zoom?: number): LngLat;
/**
* 经纬度坐标转换成平面地图像素坐标
*
* @param {LngLatLike} lnglat 经纬度
* @param {number} zoom 某个地图级别,默认是地图当前级别
* @returns {Pixel} 转换后的平面像素坐标
**/
lngLatToPixel(lnglat: LngLatLike, z?: number): Pixel;
/**
* 获取指定位置的地图分辨率,单位:米/像素。
* 参数point有指定值时,返回指定点地图分辨率,point缺省时,默认返回当前地图中心点位置的分辨率
*
* @returns {number} 分辨率
**/
getResolution(point?: LngLat): number;
/**
* 获取审图号
**/
getMapApprovalNumber(): any;
/**
* 设置掩模范围
*
* @param {LngLatLike[][][] | LngLatLike[][] | LngLatLike[]} maskPath 掩模范围
*
* @waring 经验证后,实际能工作的数据类型并不与官方文档描述一致。
*
* 以下验证有效 `LngLatLike[][][]`,`[number, number][][]`,`LngLat[][][]`。
**/
setMask(maskPath: LngLatLike[][][] | LngLatLike[][] | LngLatLike[]): void;
/**
* 设置文字是否拒绝掩模,true:不进行掩模,false:掩模
*
* @param {boolean} reject 是否拒绝掩模
**/
setLabelRejectMask(reject?: boolean): void;
/** 加载插件 */
plugin(pluginName: string, cb: Function): void;
plugin(pluginNames: string[], cb: Function): void;
/**
* 重新计算容器大小
* @warning 文档提及,但是未验证其存在
**/
resize(): void;
/**
* 获取当前位置的海拔高度并返回 :altitude 空间高度.
* @warning 文档提及,但是未验证其存在
* @version v2.1Beta
* @param {LngLatLike} lnglat
**/
getAltitude(lnglat: LngLatLike): number;
/**
* 根据像素坐标获取海拔高度
* @warning 文档提及,但是未验证其存在
* @version v2.1Beta
* @param {PixelLike} pixel
**/
getAltitudeByContainer(pixel: PixelLike): number;
/**
* 主动渲染地图
*/
render(): void;
}
export default Map;