2019-01-17 把点转换为LatLng

  1. 参数类型的判断:object、数组、某个类的实例、是否为空
  2. 对象属性的判断:是否包含某个属性,在条件表达式中的使用
export function toLatLng(a, b, c) {
  // 若a是LatLng对象
  if (a instanceof LatLng) {
    return a;
  }
  // 若a是数组,并且a[0]不是object(对象)
  if (Util.isArray(a) && typeof a[0] !== "object") {
    //若a的数组长度为3,即可能包含的是:纬度,纬度和高度
    if (a.length === 3) {
      return new LatLng(a[0], a[1], a[2]);
    }
    // 若a的数组长度是2,即可能包含的是:纬度,纬度
    if (a.length === 2) {
      return new LatLng(a[0], a[1]);
    }
    return null;
  }
  // 若a为空
  if (a === undefined || a === null) {
    return a;
  }
  // 若a是对象,并且包含lat属性
  if (typeof a === "object" && "lat" in a) {
    // 注意如何对对象的属性进行判断
    return new LatLng(a.lat, "lng" in a ? a.lng : a.lon, a.alt);
  }
  // 若未定义则返回
  if (b === undefined) {
    return null;
  }
  return new LatLng(a, b, c);
}

你可能感兴趣的:(2019-01-17 把点转换为LatLng)