flagwind-map
Version:
flagwind map library
1,749 lines (1,748 loc) • 114 kB
TypeScript
declare namespace flagwind {
class DataManager {
rawData: Array<any>;
/**
* 客户端聚合
* @param clusterRatio 聚合比率
* @param maxSingleFlareCount 最大的单个聚合点包含成员数
* @param areaDisplayMode 是否显示聚合区域
* @param map 地图对象
*/
clientSideClustering(clusterRatio: number, maxSingleFlareCount: number, areaDisplayMode: boolean, map: any): any[];
getData(): any[];
setData(data: any): void;
}
}
declare namespace flagwind {
/**
* 事件提供程序类。
* @description 用于添加或删除事件侦听器的方法,检查是否已注册特定类型的事件侦听器,并调度事件。
* @class
* @version 1.0.0
*/
class EventProvider implements IEventProvider {
private _source;
private _events;
/**
* 初始化事件提供程序的新实例。
* @param {any} source? 事件源实例。
*/
constructor(source?: any);
/**
* 为指定的事件类型注册一个侦听器,以使侦听器能够接收事件通知。
* @summary 如果不再需要某个事件侦听器,可调用 removeListener() 删除它,否则会产生内存问题。
* 由于垃圾回收器不会删除仍包含引用的对象,因此不会从内存中自动删除使用已注册事件侦听器的对象。
* @param {string} type 事件类型。
* @param {Function} 处理事件的侦听器函数。
* @param {any} scope? 侦听函数绑定的 this 对象。
* @param {boolean} once? 是否添加仅回调一次的事件侦听器,如果此参数设为 true 则在第一次回调时就自动移除监听。
* @returns void
*/
addListener(type: string, listener: Function, scope?: any, once?: boolean): void;
/**
* 移除侦听器。如果没有注册任何匹配的侦听器,则对此方法的调用没有任何效果。
* @param {string} type 事件类型。
* @param {Function} listener 处理事件的侦听器函数。
* @param {any} scope? 侦听函数绑定的 this 对象。
* @returns void
*/
removeListener(type: string, listener: Function, scope?: any): void;
/**
* 检查是否为特定事件类型注册了侦听器。
* @param {string} type 事件类型。
* @returns boolean 如果指定类型的侦听器已注册,则值为 true;否则,值为 false。
*/
hasListener(type: string): boolean;
/**
* 派发一个指定类型的事件。
* @param {string} type 事件类型。
* @param {any} data? 事件数据。
* @returns void
*/
dispatchEvent(type: string, data?: any): void;
/**
* 派发一个指定参数的事件。
* @param {EventArgs} eventArgs 事件参数实例。
* @returns void
*/
dispatchEvent(args: EventArgs): void;
}
}
declare namespace flagwind {
/**
* 功能图层包装类
*
* @export
* @class FlagwindFeatureLayer
*/
abstract class FlagwindFeatureLayer extends EventProvider implements IFlagwindSingleLayer {
id: string;
title: string | null;
protected layer: any;
isShow: boolean;
constructor(id: string, title: string | null);
readonly graphics: Array<FlagwindGraphic>;
readonly items: Array<any>;
readonly count: number;
appendTo(map: any): void;
removeLayer(map: any): void;
clear(): void;
show(): void;
hide(): void;
/**
* 获取指定id的地图要素对象
*/
getGraphicById(id: string): any;
/**
* 删除指定id的地图要素对象
*/
removeGraphicById(id: string): void;
/**
* 为指定的事件类型注册一个侦听器,以使侦听器能够接收事件通知。
* @summary 如果不再需要某个事件侦听器,可调用 removeListener() 删除它,否则会产生内存问题。
* 由于垃圾回收器不会删除仍包含引用的对象,因此不会从内存中自动删除使用已注册事件侦听器的对象。
* @param {string} type 事件类型。
* @param {Function} 处理事件的侦听器函数。
* @param {any} scope? 侦听函数绑定的 this 对象。
* @param {boolean} once? 是否添加仅回调一次的事件侦听器,如果此参数设为 true 则在第一次回调时就自动移除监听。
* @returns void
*/
on(type: string, listener: Function, scope?: any, once?: boolean): void;
/**
* 移除侦听器。如果没有注册任何匹配的侦听器,则对此方法的调用没有任何效果。
* @param {string} type 事件类型。
* @param {Function} listener 处理事件的侦听器函数。
* @param {any} scope? 侦听函数绑定的 this 对象。
* @returns void
*/
off(type: string, listener: Function, scope?: any): void;
/**
* 创建要素图层
* @param args 创建要素图层的参数
*/
abstract onCreateGraphicsLayer(args: any): any;
protected add(graphic: FlagwindGraphic): void;
protected remove(graphic: FlagwindGraphic): void;
}
}
declare namespace flagwind {
const BUSINESS_LAYER_OPTIONS: BusinessLayerOptions;
/**
* 业务图层
*/
abstract class FlagwindBusinessLayer extends FlagwindFeatureLayer {
flagwindMap: FlagwindMap;
id: string;
layerType: string;
isLoading: boolean;
options: BusinessLayerOptions;
constructor(flagwindMap: FlagwindMap, id: string, options: any);
/**
* 地图原生对象
*/
readonly map: any;
/**
* 空间坐标系
*/
readonly spatial: any;
/**
* 根据对象集合构造要素集合(无则新增,有则修改)
* @param dataList 对象集合
*/
saveGraphicList(dataList: Array<any>): void;
/**
* 根据对象集合修改要素集合(无则忽略)
* @param dataList 对象集合
*/
updateGraphicList(dataList: Array<any>): void;
/**
* 根据对象集合新增要素集合
* @param dataList 对象集合
*/
addGraphicList(dataList: Array<any>): void;
/**
* 保存要素(有则修改,无则增加)
* @param item 原始要素模型
*/
protected saveGraphicByModel(item: any): void;
/**
* 创建并增加要素
*/
protected addGraphicByModel(item: any): void;
/**
* 创建要素(未添加至图层中),请方法在flagwind包下可见
*/
creatGraphicByModel(item: any): FlagwindGraphic;
/**
* 修改要素
*/
protected updateGraphicByModel(item: any, graphic?: any | null): void;
/**
* 清除选择状态
*/
clearSelectStatus(): void;
/**
* 设置选择状态
* @param dataList 要素模型集合
* @param refresh 是否刷新(为true是时,把所有的要素还原再设置;否则,之前的状态保留,然后再追加)
*/
setSelectStatusByModels(dataList: Array<any>, refresh: boolean): void;
/**
* 获取所有选中的要素
*/
getSelectedGraphics(): Array<FlagwindGraphic>;
/**
* 设置选中状态
* @param item 要素原型
* @param selected 是否选中
*/
protected setSelectStatus(item: any, selected: boolean): void;
/**
* 创建点要素(把业务数据的坐标转换成地图上的点)
*/
getPoint(item: any): FlagwindPoint;
/**
* 把地图上的点转换成业务的坐标
* @param {*} point
*/
formPoint(point: any): {
latitude: number;
longitude: number;
};
/**
* 在指定id的graphic上打开InfoWindow
* @param id grahpic的唯一标识
* @param context 内容
* @param options 参数
*/
openInfoWindow(id: string, context: any, options: any): void;
/**
* 关闭信息窗口
*/
closeInfoWindow(): void;
/**
* 定位至指定id的点
* @param id
*/
gotoCenterById(id: string): void;
/**
* 增加到地图上
*/
addToMap(): void;
/**
* 从地图移除
*/
removeFromMap(): void;
/**
* 显示InfoWindow(在flagwind包下可用,对外不要调用此方法)
* @param args
*/
showInfoWindow(evt: {
graphic: FlagwindGraphic;
}): void;
/**
* 加载并显示设备点位
*
*/
showDataList(): Promise<void>;
/**
* 开启定时器
*/
start(): void;
/**
* 关闭定时器
*/
stop(): void;
/**
* 更新设备状态
*/
updateStatus(): void;
protected onGetInfoWindowContext(item: any): any;
protected onInit(): void;
protected onAddLayerBefor(): void;
protected onAddLayerAfter(): void;
protected onLoad(): void;
protected onMapLoad(): void;
protected registerEvent(): void;
protected onLayerClick(deviceLayer: this, evt: any): void;
protected fireEvent(eventName: string, event: any): void;
protected onValidModel(item: any): any;
/**
* 变换成标准实体
*
* @protected
* @param {*} item
* @returns {{ id: String, name: String, longitude: number, latitude: number }}
* @memberof FlagwindBusinessLayer
*/
protected onChangeStandardModel(item: any): any;
/**
* 创建要素
* @param item
*/
protected abstract onCreatGraphicByModel(item: any): FlagwindGraphic;
/**
* 修改要素
* @param item
*/
protected abstract onUpdateGraphicByModel(item: any): void;
}
}
declare namespace flagwind {
const ESRI_CLUSTER_LAYER_OPTIONS: any;
/**
* 点图层
*/
class EsriClusterLayer extends FlagwindBusinessLayer {
private dataManager;
constructor(flagwindMap: FlagwindMap, id: string, options: any);
onCreateGraphicsLayer(args: any): any;
createClusterLayer(options: any): any;
addClusters(): void;
getPreClusteredGraphics(): void;
getImageUrl(item: any): string;
readonly enableCluster: boolean;
readonly singles: any;
readonly clusters: any;
readonly graphics: Array<FlagwindGraphic>;
saveGraphicList(dataList: Array<any>): void;
addGraphicList(dataList: Array<any>): void;
/**
* 根据对象集合修改要素集合(无则忽略)
* @param dataList 对象集合
*/
updateGraphicList(dataList: Array<any>): void;
/**
* 创建要素方法
* @param item 实体信息
*/
onCreatGraphicByModel(item: any): any;
/**
* 更新要素方法
* @param item 实体信息
*/
onUpdateGraphicByModel(item: any): void;
protected add(graphic: FlagwindGraphic): void;
protected remove(graphic: FlagwindGraphic): void;
}
}
declare namespace flagwind {
/**
* 支持的地图类型
*/
enum MapType {
arcgis = "arcgis",
minemap = "minemap",
}
/**
* 地图参数
*/
const MAP_OPTIONS: {
onMapLoad(): void;
onZoomStart(level: number): void;
onZoom(level: number): void;
onZoomEnd(level: number): void;
onMapClick(evt: any): void;
formPoint(lat: number, lon: number): {
lat: number;
lon: number;
};
toPoint(lat: number, lon: number): {
lat: number;
lon: number;
};
};
abstract class FlagwindMap extends EventProvider {
mapSetting: IMapSetting;
mapElement: any;
featureLayers: Array<FlagwindFeatureLayer>;
baseLayers: Array<FlagwindTiledLayer>;
options: any;
spatial: any;
innerMap: any;
loaded: boolean;
constructor(mapSetting: IMapSetting, mapElement: any, options: any);
/**
* 坐标点转换成对象
* @param point 点
*/
onFormPoint(point: any): {
latitude: number;
longitude: number;
};
/**
* 对象转换成点
* @param item 要素原型
*/
onToPoint(item: any): FlagwindPoint;
validGeometryModel(item: any): any;
/**
* 为指定的事件类型注册一个侦听器,以使侦听器能够接收事件通知。
* @summary 如果不再需要某个事件侦听器,可调用 removeListener() 删除它,否则会产生内存问题。
* 由于垃圾回收器不会删除仍包含引用的对象,因此不会从内存中自动删除使用已注册事件侦听器的对象。
* @param {string} type 事件类型。
* @param {Function} 处理事件的侦听器函数。
* @param {any} scope? 侦听函数绑定的 this 对象。
* @param {boolean} once? 是否添加仅回调一次的事件侦听器,如果此参数设为 true 则在第一次回调时就自动移除监听。
* @returns void
*/
on(type: string, listener: Function, scope?: any, once?: boolean): void;
/**
* 移除侦听器。如果没有注册任何匹配的侦听器,则对此方法的调用没有任何效果。
* @param {string} type 事件类型。
* @param {Function} listener 处理事件的侦听器函数。
* @param {any} scope? 侦听函数绑定的 this 对象。
* @returns void
*/
off(type: string, listener: Function, scope?: any): void;
readonly map: any;
/**
* 关闭信息窗口
*/
closeInfoWindow(): void;
/**
* 中心定位
*/
centerAt(): Promise<void>;
centerAt(xy: Array<number>): Promise<void>;
centerAt(x: number, y: number): Promise<void>;
/**
* 放大或缩小到指挥zoom级别
* @param zoom
*/
setZoom(zoom: number): Promise<void>;
/**
* 创建几何点
*/
getPoint(item: any): FlagwindPoint;
/**
* 根据id查找底图
* @param id 底图id
*/
getBaseLayerById(id: string): FlagwindTiledLayer | null;
/**
* 显示所有底图
*/
showBaseLayers(): void;
/**
* 隐藏所有底图
*/
hideBaseLayers(): void;
/**
* 显示指定id的底图
* @param id
*/
showBaseLayer(id: string): boolean;
/**
* 隐藏指定id的底图
* @param id
*/
hideBaseLayer(id: string): boolean;
/**
* 销毁对象
*/
destroy(): void;
/**
* 获取指定id的功能图层
* @param id
*/
getFeatureLayerById(id: string): FlagwindFeatureLayer | null;
/**
* 增加功能图层
* @param featureLayer
*/
addFeatureLayer(featureLayer: FlagwindFeatureLayer): void;
/**
* 移除指定id的功能图层
* @param id 图层id
*/
removeFeatureLayer(id: string): boolean;
/**
* 显示指定id的功能图层
* @param id
*/
showFeatureLayer(id: string): boolean;
/**
* 隐藏指定id的功能图层
* @param id
*/
hideFeatureLayer(id: string): boolean;
/**
* 中心定位
* @param point 点
*/
abstract onCenterAt(point: FlagwindPoint): Promise<void>;
/**
* 放大或缩小至指定的级别
* @param zoom 级别
*/
abstract onZoom(zoom: number): Promise<void>;
abstract toScreen(item: any): {
x: number;
y: number;
};
abstract toScreen(x: number, y: number): {
x: number;
y: number;
};
/**
* 创建要素点
* @param point 点
*/
abstract onCreatePoint(item: any): FlagwindPoint;
/**
* 创建地图对象
*/
abstract onCreateMap(): any;
/**
* 显示信息窗口
* @param event 信息窗口构建参数
*/
abstract onShowInfoWindow(event: InfoWindowShowEventArgs): void;
/**
* 关闭信息窗口
*/
abstract onCloseInfoWindow(): void;
/**
* 创建底图
*/
abstract onCreateBaseLayers(): Array<FlagwindTiledLayer>;
/**
* 显示要素tooltip信息
* @param graphic 要显示tootip信息的要素
*/
abstract onShowTooltip(graphic: FlagwindGraphic): void;
/**
* 隐藏要素tooltip信息
*/
abstract onHideTooltip(): void;
abstract onDestroy(): void;
protected onInit(): void;
/**
* 地图加载回调
*/
protected onMapLoad(): void;
}
}
declare namespace flagwind {
/**
* 对ArcGIS右键菜单实现
*/
class EsriContextMenu implements FlagwindContextMenu {
flagwindMap: EsriMap;
enabled: boolean;
point: FlagwindPoint;
menu: any;
constructor(flagwindMap: EsriMap);
startup(eventArgs: ContextMenuEventArgs): void;
enable(): void;
disable(): void;
/**
* 获取菜单单击的坐标信息
*/
getMapPointFromMenuPosition(box: any, map: any): FlagwindPoint;
}
}
declare let esri: any;
declare let dojo: any;
declare let dijit: any;
declare let HeatmapLayer: any;
declare namespace flagwind {
class EsriEditLayer extends FlagwindFeatureLayer implements IFlagwindEditLayer {
private graphic;
private originInfo;
editObj: any;
options: any;
businessLayer: FlagwindBusinessLayer;
flagwindMap: FlagwindMap;
constructor(businessLayer: FlagwindBusinessLayer, options: any);
/**
* 激活编辑事件
* @param key 要编辑要素的id
*/
activateEdit(key: string): void;
/**
* 取消编辑要素
*/
cancelEdit(key: string): void;
onLoad(): void;
readonly map: any;
readonly spatial: any;
onCreateGraphicsLayer(args: any): any;
onChanged(options: any, isSave: boolean): Promise<boolean>;
showInfoWindow(): void;
confirm(key: string): void;
protected registerEvent(): void;
protected onLayerClick(editLayer: this, evt: any): void;
}
}
declare namespace flagwind {
/**
* 分组图层(用于需要多个要素叠加效果情况)
*
* @export
* @class FlagwindGroupLayer
*/
abstract class FlagwindGroupLayer extends EventProvider implements IFlagwindSingleLayer {
options: any;
layer: any;
isShow: boolean;
constructor(options: any);
readonly graphics: Array<any>;
appendTo(map: any): void;
removeLayer(map: any): void;
clear(): void;
show(): void;
hide(): void;
setGeometry(name: string, geometry: any): void;
setSymbol(name: string, symbol: any): void;
showGraphic(name: string): void;
hideGraphic(name: string): void;
addGraphic(name: string, ...graphics: Array<any>): void;
getMasterGraphicByName(name: string): any;
/**
* 获取资源要素点
*/
getGraphicByName(name: String): Array<any>;
/**
* 删除资源要素点
*/
removeGraphicByName(name: string): void;
/**
* 为指定的事件类型注册一个侦听器,以使侦听器能够接收事件通知。
* @summary 如果不再需要某个事件侦听器,可调用 removeListener() 删除它,否则会产生内存问题。
* 由于垃圾回收器不会删除仍包含引用的对象,因此不会从内存中自动删除使用已注册事件侦听器的对象。
* @param {string} type 事件类型。
* @param {Function} 处理事件的侦听器函数。
* @param {any} scope? 侦听函数绑定的 this 对象。
* @param {boolean} once? 是否添加仅回调一次的事件侦听器,如果此参数设为 true 则在第一次回调时就自动移除监听。
* @returns void
*/
on(type: string, listener: Function, scope?: any, once?: boolean): void;
/**
* 移除侦听器。如果没有注册任何匹配的侦听器,则对此方法的调用没有任何效果。
* @param {string} type 事件类型。
* @param {Function} listener 处理事件的侦听器函数。
* @param {any} scope? 侦听函数绑定的 this 对象。
* @returns void
*/
off(type: string, listener: Function, scope?: any): void;
abstract onCreateGraphicsLayer(options: any): any;
}
}
declare namespace flagwind {
class EsriGroupLayer extends FlagwindGroupLayer {
onCreateGraphicsLayer(args: any): any;
}
}
declare namespace flagwind {
class EsriHeatmapLayer implements IFlagwindHeatmapLayer {
flagwindMap: FlagwindMap;
private dataMap;
private map;
heatLayer: any;
isShow: boolean;
id: string;
options: any;
heatmapRenderer: any;
constructor(flagwindMap: FlagwindMap, id: string, options: any);
createHeatLayer(): any;
appendTo(map: any): void;
removeLayer(map: any): void;
resize(): void;
clear(): void;
show(): void;
hide(): void;
setMaxPixelIntensity(value: number): void;
showDataList(data: Array<any>): void;
onChangeStandardModel(data: Array<any>): Array<any>;
}
}
declare namespace flagwind {
class EsriLocationLayer extends FlagwindFeatureLayer implements IFlagwindLocationLayer {
flagwindMap: FlagwindMap;
options: any;
point: any;
constructor(flagwindMap: FlagwindMap, options: any);
registerEvent(): void;
onCreateGraphicsLayer(options: any): any;
locate(): void;
protected getFillSymbol(width: number, color: any): any;
protected createSymbol(path: any, color: any): any;
protected createGraphic(pt: any): any;
}
}
declare namespace flagwind {
/**
* 对ArcGIS地图封装
*/
class EsriMap extends FlagwindMap {
mapSetting: EsriSetting;
protected tooltipElement: HTMLDivElement;
constructor(mapSetting: EsriSetting, mapElement: any, options: any);
onAddEventListener(eventName: string, callBack: Function): void;
onCenterAt(point: any): Promise<void>;
onCreatePoint(options: any): any;
onCreateMap(): void;
onShowInfoWindow(evt: InfoWindowShowEventArgs): void;
onCloseInfoWindow(): void;
onCreateBaseLayers(): Array<FlagwindTiledLayer>;
toScreen(item: any): {
x: number;
y: number;
};
toScreen(x: number, y: number): {
x: number;
y: number;
};
onZoom(zoom: number): Promise<void>;
onShowTooltip(graphic: any): void;
onHideTooltip(): void;
onDestroy(): void;
}
}
declare namespace flagwind {
const ESRI_POINT_LAYER_OPTIONS: any;
/**
* 点图层
*/
class EsriPointLayer extends FlagwindBusinessLayer {
constructor(flagwindMap: FlagwindMap, id: string, options: any);
onCreateGraphicsLayer(options: any): any;
getImageUrl(item: any): string;
/**
* 创建要素方法
* @param item 实体信息
*/
onCreatGraphicByModel(item: any): any;
/**
* 更新要素方法
* @param item 实体信息
*/
onUpdateGraphicByModel(item: any): void;
}
}
declare namespace flagwind {
const ESRI_POLYGON_LAYER_OPTIONS: any;
/**
* 面图层
*/
class EsriPolygonLayer extends FlagwindBusinessLayer {
constructor(flagwindMap: FlagwindMap, id: string, options: any);
onCreateGraphicsLayer(options: any): any;
/**
* 创建要素方法
* @param item 实体信息
*/
onCreatGraphicByModel(item: any): any;
/**
* 更新要素方法
* @param item 实体信息
*/
onUpdateGraphicByModel(item: any): void;
protected getPolygon(strLine: string): any;
protected getFillSymbol(symbol: any): any;
}
}
declare namespace flagwind {
const ESRI_POLYLINE_LAYER_OPTIONS: any;
/**
* 线图层
*/
class EsriPolylineLayer extends FlagwindBusinessLayer {
constructor(flagwindMap: FlagwindMap, id: string, options: any);
onCreateGraphicsLayer(options: any): any;
/**
* 创建要素方法
* @param item 实体信息
*/
onCreatGraphicByModel(item: any): any;
/**
* 更新要素方法
* @param item 实体信息
*/
onUpdateGraphicByModel(item: any): void;
setSelectStatus(item: any, selected: boolean): void;
protected getLineSymbol(symbol: any): any;
/**
* 把点集字符串转换成线要素
* @param strLine 坐标点字符串"x1,y1;x2,y2;x3,y3"
*/
protected getPolyline(strLine: string): any;
}
}
declare namespace flagwind {
const ROUTE_LAYER_OPTIONS: any;
const TRACKLINE_OPTIONS: any;
abstract class FlagwindRouteLayer implements IFlagwindCombineLayer {
flagwindMap: FlagwindMap;
layerName: string;
options: any;
isShow: boolean;
moveLineLayer: FlagwindGroupLayer;
moveMarkLayer: FlagwindGroupLayer;
trackLines: Array<TrackLine>;
activedTrackLineName: string;
readonly spatial: any;
constructor(flagwindMap: FlagwindMap, layerName: string, options: any);
/**
* 创建线路图层
* @param id 图层唯一标识
*/
abstract onCreateLineLayer(id: string): FlagwindGroupLayer;
/**
* 创建移动要素图层
* @param id 图层唯一标识
*/
abstract onCreateMovingLayer(id: string): FlagwindGroupLayer;
/**
* 判断要素是否在同一位置
* @param originGraphic 原始坐标要素
* @param targetGraphic 修改后的要素
*/
abstract onEqualGraphic(originGraphic: FlagwindGraphic, targetGraphic: FlagwindGraphic): boolean;
/**
* 在地图显示线路上的路段
* @param segment 路段
*/
abstract onShowSegmentLine(segment: TrackSegment): void;
/**
* 构建标准的停靠点
* @param name 线路名
* @param stops 原始停靠点
*/
abstract onGetStandardStops(name: String, stops: Array<any>): Array<any>;
/**
* 设置路段用几何线
* @param options 路段参数
* @param segment 路段
*/
abstract onSetSegmentByLine(options: any, segment: TrackSegment): any;
/**
* 设置路段用几何点集合
* @param options 路段参数
* @param segment 路段
*/
abstract onSetSegmentByPoint(options: any, segment: TrackSegment): any;
/**
* 由网络分析服务来求解轨迹
*
* @param {TrackSegment} segment 要播放的路段
* @param {*} start 起点要素
* @param {*} end 终点要素
* @param {any[]} [waypoints] 途经要素点
* @memberof flagwindRoute
*/
abstract onSolveByService(segment: TrackSegment, start: any, end: any, waypoints: Array<any>): void;
/**
* 由连线求解轨迹
* @param segment
*/
abstract onSolveByJoinPoint(segment: TrackSegment): void;
/**
* 创建移动要素
* @param {*} trackline 线路
* @param {*} graphic 停靠点要素
* @param {*} angle 偏转角
*/
abstract onCreateMoveMark(trackline: TrackLine, graphic: FlagwindGraphic, angle: number): void;
/**
* 修改移动要素
* @param trackline 线路
* @param point 位置
* @param angle 角度
*/
abstract onUpdateMoveGraphic(trackline: TrackLine, point: FlagwindPoint, angle: number): void;
/**
* 显示图层
*/
show(): void;
/**
* 隐藏图层
*/
hide(): void;
/**
* 清除所有
*/
clearAll(): void;
/**
* 清除指定的线路名的路径和移动要素
* @param name 线路名称
*/
clear(name?: string): void;
/**
* 清除指定的线路名的线路
* @param name 线路名称
*/
clearLine(name: string): void;
/**
* 获取指定名称的线路
* @param name 指定名称
*/
getTrackLine(name: string): TrackLine | null;
/**
* 向指定线路中增加路段
* @param name 线路名
* @param segment 路段
* @param lineOptions 线路参数
*/
addTrackSegment(name: string, segment: TrackSegment, lineOptions: any): void;
/**
* 计算线路的下一个路段索引
* @param name 线路名
*/
getNextSegmentIndex(name: string): number;
/**
* 获取线路的下一路段
* @param name 线路名称
* @param index 路段索引
*/
getNextSegment(name: string, index: number): TrackSegment;
/**
* 获取线路中的最后一路段
* @param name 线路名称
*/
getLastSegment(name: string): TrackSegment;
/**
* 获取监控最近播放完成的路段线路
* @param name 线路名称
*/
getActiveCompletedSegment(name: string): TrackSegment;
/**
* 判断线路是否在运行
* @param name 线路名称
*/
getIsRunning(name: string): boolean;
/**
* 停止指定线路移动要素播放
* @param name 线路名称
*/
stop(name?: string): void;
/**
* 停止所有线路移动要素播放
*/
stopAll(): void;
/**
* 启动线路播放(起点为上次播放的终点)
*/
move(name: string): void;
/**
* 启动线路播放(起点为线路的始点)
*/
start(name: string): void;
/**
* 暂停
*/
pause(name: string): void;
/**
* 继续
*/
continue(name: string): void;
/**
* 调速
*/
changeSpeed(name: string, speed: number): void;
/**
* 加速
* @param name 线路名称
*/
speedUp(name: string): string;
/**
* 减速
* @param name 线路名称
*/
speedDown(name: string): string;
/**
* 求解最短路径(与solveLine不同,它求解的是一个路段,该路段起点为stops[0],终点为stops[stops.length-1]
*
* @param {any} name 线路名称
* @param {any} stops 经过的站点
* @param {any} options 可选参数
*/
solveSegment(name: string, stops: Array<any>, options: any): void;
/**
* 求解最短路径(根据stops数量设置多个多个路段,相连的两点组成一个路段)
*
* @param {any} name 线路名称
* @param {any} stops 经过的站点
* @param {any} options 可选参数
*/
solveLine(name: string, stops: Array<any>, options: any): void;
/**
* 发送路由请求
* @ index:路段索引
* @ name:线路名称
* @ start:开始要素
* @ end:终点要素
* @ lineOptions:线路控制的参数
* @ waypoints:经过的点
*/
protected post(index: number, name: string, start: any, end: any, lineOptions: any, waypoints?: Array<any>): void;
/**
* 路由分析完成回调
*/
protected solveComplete(options: {
polyline: any;
length: number;
}, segment: TrackSegment): void;
/**
* 路由分析失败回调
*/
protected errorHandler(err: any, segment: TrackSegment): void;
/**
* 线段创建完成事件回调
* @param {*} segment
*/
protected onCreateSegmentComplete(segment: TrackSegment): void;
/**
*
* 显示路段事件
*
* @protected
* @memberof flagwindRoute
*/
protected onShowSegmentLineEvent(flagwindRoute: this, segment: TrackSegment, trackSegmentOptions: any): void;
/**
* 线段播放开始事故
*/
protected onMoveStartEvent(flagwindRoute: this, segment: TrackSegment, graphic: any, angle: number): void;
/**
* 线段播放完成事件
*/
protected onMoveEndEvent(flagwindRoute: this, segment: TrackSegment, graphic: any, angle: number): void;
/**
* 移动回调事件
*/
protected onMoveEvent(flagwindRoute: this, segment: TrackSegment, xy: any, angle: number): void;
protected onAddLayerBefor(): void;
protected onAddLayerAfter(): void;
protected onLoad(): void;
/**
* 检测地图设置,防止图层未加载到地图上
*/
protected checkMapSetting(): void;
/**
* 标准化停靠点模型
* @param item 原始模型
*/
protected changeStandardModel(item: any): any;
/**
* 验证停靠点模型
* @param item 原始模型
*/
protected validGeometryModel(item: any): any;
}
}
declare namespace flagwind {
class EsriRouteLayer extends FlagwindRouteLayer {
moveLineLayer: FlagwindGroupLayer;
moveMarkLayer: FlagwindGroupLayer;
trackLines: Array<TrackLine>;
onSetSegmentByLine(options: any, segment: TrackSegment): void;
onSetSegmentByPoint(options: any, segment: TrackSegment): void;
onShowSegmentLine(segment: TrackSegment): void;
onCreateMoveMark(trackline: TrackLine, graphic: any, angle: number): void;
/**
* 每次位置移动线路上的要素样式变换操作
*/
onUpdateMoveGraphic(trackline: TrackLine, point: any, angle: number): void;
getImageUrl(trackline: TrackLine, angle: number): any;
getImageAngle(trackline: TrackLine, angle: number): any;
onCreateLineLayer(id: string): FlagwindGroupLayer;
onCreateMovingLayer(id: string): FlagwindGroupLayer;
onEqualGraphic(originGraphic: any, targetGraphic: any): boolean;
onGetStandardStops(name: String, stops: Array<any>): Array<any>;
onSolveByService(segment: TrackSegment, start: any, end: any, waypoints: Array<any>): void;
onSolveByJoinPoint(segment: TrackSegment): void;
onAddEventListener(groupLayer: FlagwindGroupLayer, eventName: string, callBack: Function): void;
getSpatialReferenceFormNA(): any;
protected cloneStopGraphic(graphic: any): any;
}
}
declare namespace flagwind {
const SELECT_BOX_OPTIONS_ESRI: any;
/**
* 地图选择组件
*/
class EsriSelectBox extends EventProvider implements IFlagwindSelectBox {
flagwindMap: FlagwindMap;
private draw;
element: HTMLDivElement;
options: SelectBoxOptions;
mode: string;
isActive: boolean;
id: string;
layers: Array<FlagwindBusinessLayer>;
constructor(flagwindMap: FlagwindMap, options: any);
onCreateRecord(me: this, e: any): void;
getLayerById(id: string): FlagwindBusinessLayer;
addLayer(layer: FlagwindBusinessLayer): void;
removeLayer(layer: FlagwindBusinessLayer): void;
show(): void;
hide(): void;
deleteSelectBar(): void;
showSelectBar(): void;
clear(): void;
active(mode: string): void;
destroy(): void;
}
}
declare namespace flagwind {
/**
* 底图包装类
*
* @export
* @class FlagwindTiledLayer
*/
abstract class FlagwindTiledLayer implements IFlagwindSingleLayer {
id: string;
url: string | null;
spatial: any;
title: string | null;
layer: any;
isShow: boolean;
constructor(id: string, url: string | null, spatial: any, title: string | null);
abstract onCreateTiledLayer(args: any): any;
appendTo(map: any): void;
removeLayer(map: any): void;
show(): void;
hide(): void;
}
}
declare namespace flagwind {
class EsriTiledLayer extends FlagwindTiledLayer {
onCreateTiledLayer(args: any): any;
}
}
declare namespace flagwind {
const TRACK_LAYER_OPTIONS: any;
class FlagwindTrackLayer implements IFlagwindCombineLayer {
businessLayer: FlagwindBusinessLayer;
routeLayer: FlagwindRouteLayer;
options: any;
private _trackToolBox;
private _playButton;
private _pauseButton;
private _speedUpButton;
private _speedDownButton;
private _clearButton;
private _toolBoxText;
activedTrackLineName: string;
isShow: boolean;
id: string;
constructor(businessLayer: FlagwindBusinessLayer, routeLayer: FlagwindRouteLayer, options: any);
readonly toolBoxId: string;
readonly flagwindMap: FlagwindMap;
/**
* 移动要素是否正在跑
*/
readonly isRunning: boolean;
/**
* 移动要素是否跑完
*/
readonly isCompleted: boolean;
/**
* 移动要素是否隐藏
*/
readonly isMovingGraphicHide: boolean;
readonly trackLine: TrackLine;
/**
* 删除播放控件
*/
deleteTrackToolBox(): void;
/**
* 显示播放控件
*/
showTrackToolBox(): void;
/**
* 显示轨迹线路(不播放)
* @param stopList 停靠点原型数据集合
* @param trackLineName 线路名称
* @param options 轨迹构建参数
*/
showTrack(stopList: Array<any>, trackLineName?: string, options?: any): void;
/**
* 启动线路播放(起点为线路的始点)
* @param stopList 停靠点原型数据集合
* @param trackLineName 线路名称
* @param options 轨迹构建参数
*/
startTrack(stopList: Array<any>, trackLineName?: string, options?: any): void;
/**
* 启动线路播放(起点为上次播放的终点)
* @param stopList 停靠点原型数据集合
* @param trackLineName 线路名称
*/
moveTrack(stopList: Array<any>, trackLineName?: string): void;
/**
* 显示所有
*/
clearAll(): void;
/**
* 清除要素
*/
clear(): void;
/**
* 显示图层
*/
show(): void;
/**
* 隐藏图层
*/
hide(): void;
/**
* 继续上次播放
*/
move(): void;
/**
* 重新播放
*/
start(): void;
/**
* 停止
*/
stop(): void;
/**
* 暂停
*/
pause(): void;
/**
* 继续
*/
continue(): void;
up(): string;
down(): string;
/**
* 加速
*/
speedUp(): string;
/**
* 减速
*/
speedDown(): string;
/**
* 调速
*/
changeSpeed(speed: number): void;
/**
* 切换线路
* @param name 线路名称
*/
changeTrackLine(name: string): void;
}
}
declare namespace flagwind {
/**
* 车辆路由服务
*/
class EsriTrackLayer extends FlagwindTrackLayer {
businessLayer: FlagwindBusinessLayer;
constructor(businessLayer: FlagwindBusinessLayer, options: any);
}
}
declare namespace flagwind {
const DRAW_LAYER_OPTIONS: {
onDrawCompleteEvent: (geometry: any) => void;
};
/**
* 绘画
*/
interface IFlagwindDraw {
activate(mode: string, options?: any): void;
finish(): void;
}
}
declare namespace flagwind {
/**
* 绘制图层
*/
class EsriDraw implements IFlagwindDraw {
private symbolSetting;
flagwindMap: FlagwindMap;
draw: any;
mode: any;
options: any;
constructor(flagwindMap: FlagwindMap, options?: any);
activate(mode: string, options?: any): void;
finish(): void;
private setSymbol(mode, options);
private onDrawComplete(evt);
private readonly lineSymbol;
private readonly fillSymbol;
}
}
declare namespace flagwind {
class EsriSetting implements IMapSetting {
arcgisApi: string;
baseUrl: string;
tiledUrls: Array<{
id: string;
url: string;
title: string;
}>;
wkid: number;
routeUrl: string;
extent: Array<number>;
basemap: string;
units: number;
center: Array<number>;
wkidFromApp: number;
minZoom: number;
maxZoom: number;
zoom: number;
logo: boolean;
slider: boolean;
sliderPosition: string;
}
}
declare namespace flagwind {
/**
* 组合类型图层
*
* @export
* @class IFlagwindCombineLayer
*/
interface IFlagwindCombineLayer extends IFlagwindLayer {
clearAll(): void;
}
}
declare namespace flagwind {
const EDIT_LAYER_OPTIONS: any;
interface IFlagwindEditLayer extends IFlagwindSingleLayer {
businessLayer: FlagwindBusinessLayer;
/**
* 激活编辑事件
* @param key 要编辑要素的id
*/
activateEdit(key: string): void;
/**
* 取消编辑要素
*/
cancelEdit(key: string): void;
onChanged(item: any, isSave: boolean): Promise<boolean>;
}
}
declare namespace flagwind {
interface HeatmapPoint {
longitude: number;
latitude: number;
count: number;
members: Array<any>;
}
const HEATMAP_LAYER_OPTIONS: {
changeStandardModel: (data: any) => {
longitude: any;
latitude: any;
};
};
/**
* 热力图
*/
interface IFlagwindHeatmapLayer extends IFlagwindSingleLayer {
clear(): void;
show(): void;
hide(): void;
resize(): void;
showDataList(items: Array<any>, changeExtent: boolean): void;
}
}
declare namespace flagwind {
const LOCATION_LAYER_OPTIONS: {
onMapClick: (evt: any) => void;
};
interface IFlagwindLocationLayer extends IFlagwindSingleLayer {
point: any;
clear(): void;
locate(): void;
}
}
declare namespace flagwind {
interface SelectBoxOptions {
selectMode: number;
onDrawStart: () => void;
onDrawEnd: () => void;
onCheckChanged: (checkItems: Array<any>, layer: FlagwindBusinessLayer) => void;
}
/**
* 地图选择工具
*/
interface IFlagwindSelectBox {
isActive: boolean;
layers: Array<FlagwindBusinessLayer>;
active(mode: string): void;
showSelectBar(): void;
deleteSelectBar(): void;
getLayerById(id: string): FlagwindBusinessLayer;
deleteSelectBar(): void;
addLayer(layer: FlagwindBusinessLayer): void;
removeLayer(layer: FlagwindBusinessLayer): void;
show(): void;
hide(): void;
clear(): void;
destroy(): void;
}
}
declare namespace flagwind {
/**
* 单类型图层
*
* @export
* @class IFlagwindSingleLayer
*/
interface IFlagwindSingleLayer extends IFlagwindLayer {
appendTo(map: any): void;
removeLayer(map: any): void;
}
}
declare namespace flagwind {
/**
* 底图包装类
*
* @export
* @class FlagwindTiledLayer
*/
interface IFlagwindLayer {
isShow: boolean;
show(): void;
hide(): void;
}
}
declare namespace flagwind {
interface BusinessLayerOptions {
autoInit: boolean;
symbol: any;
timeout: number;
enableEdit: boolean;
selectMode: number;
showTooltip: boolean;
showInfoWindow: boolean;
dataType: String;
changeStandardModel(model: any): void;
getInfoWindowContext(mode: any): any;
getDataList(): Promise<Array<any>>;
getLastStatus(): Promise<Array<any>>;
onLayerClick(evt: any): void;
onMapLoad(): void;
onEvent(eventName: string, evt: any): void;
onCheckChanged(evt: {
target: Array<any>;
check: boolean;
selectedItems: Array<any>;
}): void;
showInfoWindowCompleted(model: any): void;
onPositionChanged(currentPoint: any, originPoint: any, item: any): void;
onVisibleChanged(isShow: boolean): void;
}
const TRACKSEGMENT_OPTIONS: {
speed: number;
maxSpeed: number;
numsOfKilometer: number;
autoShowLine: boolean;
onShowSegmentLineEvent(segment: TrackSegment): void;
onMoveStartEvent(target: any, startGraphic: any, angle: number): void;
onMoveEndEvent(target: any, endGraphic: any, angle: number): void;
onMoveEvent(target: any, point: any, angle: number): void;
};
/**
* 地图图形要素
*/
interface FlagwindGraphic {
attributes: any;
geometry: any;
symbol: any;
show(): void;
hide(): void;
setAngle(angle: number): void;
setSymbol(symbol: any): void;
setGeometry(geometry: any): void;
}
interface FlagwindContextMenu {
enabled: boolean;
startup(eventArgs: ContextMenuEventArgs): void;
enable(): void;
disable(): void;
}
/**
* 地图右键菜单创建事件参数
*/
interface ContextMenuEventArgs {
menus: Array<any>;
onClick: Function;
}
/**
* 地图点类型定义
*/
interface FlagwindPoint {
x: number;
y: number;
spatial: any;
}
/**
* 地图打开事件参数
*/
interface InfoWindowShowEventArgs {
graphic: any;
context: {
type: string;
title: any;
content: any;
};
options?: any;
}
enum SelectMode {
none = 0,
single = 1,
multiple = 2,
}
enum LayerType {
point = "point",
polyline = "polyline",
polygon = "polygon",
}
/**
* 对轨迹播放中线路的路段的定义
*
* @export
* @class TrackSegment
*/
class TrackSegment {
flagwindRouteLayer: FlagwindRouteLayer;
index: number;
name: string;
startGraphic: FlagwindGraphic;
endGraphic: FlagwindGraphic;
options: any;
timer: any;
/**
* 移动要素在该路段点集合的位置
*/
position: number;
/**
* 线段长度
*/
length: number | null;
/**
* 线段速度
*/
speed: number | null;
/**
* 是否播放完成
*/
isCompleted: boolean;
/**
* 是否正在运行
*/
isRunning: boolean;
/**
* 线路点集合
*/
line: Array<any>;
/**
* 几何线
*/
polyline: any | null;
/**
* 定时器时间(ms)
*/
time: number;
/**
* 要素线(由外部使用)
*
* @type {*}
* @memberof TrackSegment
*/
lineGraphic: any;
/**
*
* 途经的点
*
* @type {any[]}
* @memberof TrackSegment
*/
waypoints: Array<any>;
constructor(flagwindRouteLayer: FlagwindRouteLayer, index: number, name: string, startGraphic: FlagwindGraphic, endGraphic: FlagwindGraphic, options: any);
/**
* 设置拆线
* @param polyline 几何拆线
* @param length 线的长度
*/
setPolyLine(polyline: any, length: number): void;
/**
* 设置直线
* @param points 几何点集
*/
setMultPoints(points: Array<any>): void;
/**
* 变换速度
* @param speed 速度值
*/
changeSpeed(speed?: number | null): void;
/**
* 播放移动要素(起点为上次终点)
*/
move(): void;
/**
* 播放移动要素(起点为路段的始点)
*/
start(): boolean;
/**
* 当定时器为空,且运行状态为true时表示是暂停
*/
readonly isPaused: boolean;
/**
* 暂停
*/
pause(): void;
/**
* 停止
*/
stop(): void;
/**
* 重置
*/
reset(): void;
}
/**
* 对轨迹播放中线路的定义(它由多个路段组成)
*
* @export
* @class TrackLine
*/
class TrackLine {
flagwindMap: FlagwindMap;
name: string;
options: any;
/**
* 设置线路上移动要素(如:车辆图标)
*/
markerGraphic: FlagwindGraphic;
/**
* 路段集合
*/
segments: Array<TrackSegment>;
/**
* 移动要素是否隐藏
*/
isMovingGraphicHide: boolean;
/**
* 当前速度
*/
speed: number | null;
direction: number | null;
step: number | null;
constructor(flagwindMap: FlagwindMap, name: string, options: any);
/**
* 获取监控最近播放完成的路段线路
*/
readonly activeCompletedSegment: TrackSegment | null;
/**
* 计算线路的下一个路段索引
*/
readonly nextSegmentIndex: number;
/**
* 获取最后的一个路段
*/
readonly lastSegment: TrackSegment | null;
/**
* 若有一个路段正在跑,代表该线路是正在运行
*/
readonly isRunning: boolean;
/**
* 当所有的路段完成时,说明线路是跑完状态
*/
readonly isCompleted: boolean;
/**
* 隐藏移动要素
*
* @memberof TrackLine
*/
hideMovingGraphic(): void;
/**
* 显示移动要素
*
* @memberof TrackLine
*/
showMovingGraphic(): void;
/**
* 调速
*/
changeSpeed(speed: number): void;
/**
* 增速
*/
speedUp(): string;
/**
* 减速
*/
speedDown(): string;
/**
* 启动线路播放(从第一个路段的起点开始)
*/
start(): void;
/**
* 停止线路
*/
stop(): void;
/**
* 重置
*/
reset(): void;
/**
* 暂停
*/
pause(): void;
/**
* 继续(与 暂停 是操作对,只能是在调用了暂停 才可以启用它)
*/
continue(): void;
/**
* 移动(起点为上一次的终点,如果之前没有播放过,则从线路的起点开始)
*/
move(): void;
/**
* 增加路段
*/
add(segment: TrackSegment): void;
/**
* 获取线路的下一路段
* @param index 路段索引
*/
getNextSegment(index: number): TrackSegment | null;
/**
* 获取线路的指定索引路段
*/
getSegment(index: number): TrackSegment | null;
}
}
declare namespace flagwind {
interface IMapSetting {
wkid: number;
extent: Array<number>;
units: number;
center: Array<number>;
wkidFromApp: number;
minZoom: number;
maxZoom: number;
zoom: number;
logo: boolean;
slider: boolean;
sliderPosition: string;
}
}
declare namespace flagwind {
class MapUtils {
static PI: number;
static X_PI: number;
/**
* 增密
* @param start 始点
* @param end 终点
* @param n 增加的点数
*/
static density(start: MinemapPoint, end: MinemapPoint, n: number): (MinemapPoint | {
x: number;
y: number;
})[];
/**
* 把一个直线,切成多个点
* @param start 始点