/**
 * 地图内部服务接口
 */
interface MapService {
  
  /**
   * 加载地图
   * @param el 地图绑定的元素
   */
  loadMap(el: string): void;

  /**
   * 清楚点位
   */
  clearPoint(): void;
  
  addPoint<T>(payload: PointPayload<T>): void;
  

  addPoints<T>(payloads: PointPayload<T>[]): void;

  addSimplePoint(payload: SimplePointPayload): void;

  addSimplePoints(payload: SimplePointPayload[]): void;

}

/**
 * 点位负载信息
 */
interface PointPayload<Data> {
  name: string // 点位名称
  position: number[], // 经纬度 
  content: string; // 坐标点
  data: InfoWindowPayload<Data> // 携带的消息数据负载
}

interface SimplePointPayload {
  name: string // 点位名称
  position: number[], // 经纬度 
  content: string; // 坐标点
}

/**
 *  信息窗口负载信息
 */
interface InfoWindowPayload<Data> {
  content: (info: InfoWindowPayload<Data>) => string // 信息窗口
  data: Data
}


