{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/my-location/index.ts"],"sourcesContent":["import AMapLoader from '@amap/amap-jsapi-loader'\nimport type { CSSProperties, VNode } from 'vue'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, nextTick, reactive, ref, watch } from 'vue'\nimport {\n  VcBtn,\n  VcTooltip,\n  VcIcon,\n  VcSpinnerPuff,\n  VcSpinnerOval,\n  VcSpinnerTail,\n  VcSpinnerIos,\n  VcSpinnerOrbit,\n  VcSpinnerBars,\n  VcTooltipProps\n} from 'casc-cesium-components/ui'\nimport type { VcTooltipRef, VcBtnRef } from 'casc-cesium-components/ui'\nimport type { VcLocationEvt, VcColor, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport { $, getVcParentInstance, getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { gcj02towgs84 } from 'casc-cesium-utils/coordtransform'\nimport { makeColor, makeCartesian3 } from 'casc-cesium-utils/cesium-helpers'\nimport { isArray, isFunction, isPlainObject } from 'casc-cesium-utils/util'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport defaultProps from './defaultProps'\nimport { commonEmits } from 'casc-cesium-utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  locationEvt: (evt: VcLocationEvt) => true\n}\nexport const myLocationProps = defaultProps\nexport default defineComponent({\n  name: 'VcMyLocation',\n  props: myLocationProps,\n  emits: emits,\n  setup(props: VcMyLocationProps, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcMyLocation'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const { t } = useLocale()\n    const rootRef = ref<HTMLElement>(null)\n    const tooltipRef = ref<VcTooltipRef>(null)\n    const btnRef = ref<VcBtnRef>(null)\n    const positioning = ref(false)\n    const positionState = usePosition(props, $services)\n    const parentInstance = getVcParentInstance(instance)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    let datasource: Cesium.CustomDataSource\n    let amapGeolocation: any = undefined\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // computed\n    const myLocationTip = computed(() => {\n      return positioning.value\n        ? t('vc.navigation.myLocation.positioning')\n        : (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.myLocation.myLocationTip')\n    })\n    // methods\n    instance.createCesiumObject = async () => {\n      canRender.value = true\n      const { viewer } = $services\n      const { CustomDataSource } = Cesium\n      const locationDsArray = viewer.dataSources.getByName('__vc-myLocation__')\n      if (locationDsArray.length) {\n        datasource = locationDsArray[0]\n      } else {\n        viewer.dataSources.add(new CustomDataSource('__vc-myLocation__')).then(ds => {\n          datasource = ds\n        })\n      }\n\n      let promiseLoadAmap: Promise<unknown> | undefined = undefined\n      if (props.amap && props.amap.key) {\n        const options = props.amap.options\n        promiseLoadAmap = new Promise((resolve, reject) => {\n          AMapLoader.load({\n            key: props.amap?.key,\n            version: props.amap?.version,\n            plugins: ['AMap.Geolocation']\n          })\n            .then(Amap => {\n              amapGeolocation = new Amap.Geolocation(options)\n              resolve(amapGeolocation)\n            })\n            .catch(e => {\n              commonState.logger.error(e)\n              reject(e)\n            })\n        })\n      }\n\n      const promiseAppend = new Promise((resolve, reject) => {\n        nextTick(() => {\n          if (!hasVcNavigation && props.teleportToViewer) {\n            const viewerElement = ($services.viewer as any)._element\n            viewerElement.appendChild($(rootRef))\n            resolve($(rootRef))\n          } else {\n            resolve($(rootRef))\n          }\n        })\n      })\n      return Promise.all([promiseAppend, promiseLoadAmap]).then(e => {\n        return e[0]\n      })\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      if (amapGeolocation) {\n        const scripts = document.getElementsByTagName('script')\n        const removeScripts: HTMLScriptElement[] = []\n        for (const script of scripts) {\n          if (script.src.indexOf('/webapi.amap.com/maps') > -1) {\n            removeScripts.push(script)\n          }\n        }\n        removeScripts.forEach(script => {\n          document.getElementsByTagName('body')[0].removeChild(script)\n        })\n      }\n\n      const viewerElement = ($services.viewer as any)._element\n      if (!hasVcNavigation) {\n        viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      }\n\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n      return viewer.dataSources.remove(datasource, true)\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      if (!hasVcNavigation) {\n        const side = positionState.attach.value\n        const btnTarget = $(btnRef)?.$el\n        if (btnTarget !== void 0) {\n          // const clientRect = btnTarget.getBoundingClientRect()\n          // css.width = `${clientRect.width}px`\n          // css.height = `${clientRect.height}px`\n\n          if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\n            if ((side.bottom || side.top) && !side.left && !side.right) {\n              css.left = '50%'\n              css.transform = 'translate(-50%, 0)'\n            }\n\n            if ((side.left || side.right) && !side.top && !side.bottom) {\n              css.top = '50%'\n              css.transform = 'translate(0, -50%)'\n            }\n          }\n        }\n      }\n\n      Object.assign(rootStyle, css)\n    }\n\n    const onHandleClick = () => {\n      $(tooltipRef)?.hide()\n      positioning.value = true\n      if (isFunction(props.customAPI)) {\n        const position = props.customAPI(handleLocationError)\n        zoomToMyLocation(position)\n      } else if (amapGeolocation && props.amap && props.amap.key) {\n        amapGeolocation.getCurrentPosition((status, result) => {\n          if (status === 'complete') {\n            let position: number[] = [result.position.lng, result.position.lat]\n            if (props.amap?.transformToWGS84) {\n              position = gcj02towgs84(position[0], position[1])\n            }\n            zoomToMyLocation(\n              {\n                lng: position[0],\n                lat: position[1],\n                address: result.formattedAddress\n              },\n              result\n            )\n          } else {\n            handleLocationError(t('vc.navigation.myLocation.fail'), result.message)\n          }\n        })\n      } else if (props.geolocation) {\n        navigator.geolocation.getCurrentPosition(\n          position => {\n            zoomToMyLocation(\n              {\n                lng: position.coords.longitude,\n                lat: position.coords.latitude\n              },\n              position\n            )\n          },\n          handleLocationError,\n          {\n            enableHighAccuracy: props.geolocation.enableHighAccuracy,\n            timeout: props.geolocation.timeout,\n            maximumAge: props.geolocation.maximumAge\n          }\n        )\n      } else {\n        handleLocationError(t('vc.navigation.myLocation.fail'))\n      }\n    }\n\n    const zoomToMyLocation = (position, detail?) => {\n      const longitude = position.lng\n      const latitude = position.lat\n      const address = position.address\n      const { Rectangle, sampleTerrain, defined, SceneMode } = Cesium\n      const { viewer } = $services\n      datasource.entities.removeAll()\n      const myPositionEntity = datasource.entities.add({\n        id: props.id,\n        position: makeCartesian3([longitude, latitude], viewer.scene.globe.ellipsoid) as Cesium.Cartesian3,\n        point: {\n          color: makeColor(props.pointColor),\n          pixelSize: props.pixelSize,\n          outlineWidth: props.outlineWidth,\n          outlineColor: makeColor(props.outlineColor)\n        },\n        properties: {\n          ...detail\n        },\n        description:\n          props.description?.call(this, position, detail) ||\n          describeWithoutUnderscores({\n            [t('vc.navigation.myLocation.lng')]: longitude,\n            [t('vc.navigation.myLocation.lat')]: latitude,\n            [t('vc.navigation.myLocation.address')]: address\n          })\n      })\n\n      const listener = getInstanceListener(instance, 'locationEvt')\n      listener &&\n        ctx.emit('locationEvt', {\n          type: 'location',\n          position,\n          detail,\n          entity: myPositionEntity\n        })\n\n      const options: any = {\n        duration: props.duration\n      }\n\n      defined(props.maximumHeight) && (options.maximumHeight = props.maximumHeight)\n      defined(props.hpr) && isArray(props.hpr) && (options.offset = new Cesium.HeadingPitchRange(props.hpr[0], props.hpr[1], props.hpr[2]))\n\n      if (viewer.scene.mode === SceneMode.SCENE2D || viewer.scene.mode === SceneMode.COLUMBUS_VIEW) {\n        return viewer.flyTo(myPositionEntity, options).then(() => {\n          positioning.value = false\n          listener &&\n            ctx.emit('locationEvt', {\n              type: 'zoomIn',\n              camera: viewer.camera,\n              status: 'end'\n            })\n        })\n      }\n\n      // west, south, east, north, result\n      const factor = props.factor\n      const rectangle = Rectangle.fromDegrees(longitude - factor, latitude - factor, longitude + factor, latitude + factor)\n      const camera = viewer.scene.camera\n      // Work out the destination that the camera would naturally fly to\n      const destinationCartesian = camera.getRectangleCameraCoordinates(rectangle)\n      const destination = viewer.scene.globe.ellipsoid.cartesianToCartographic(destinationCartesian)\n      const terrainProvider = viewer.scene.globe.terrainProvider\n      const level = props.level // A sufficiently coarse tile level that still has approximately accurate height\n      const positions = [Rectangle.center(rectangle)]\n\n      // Perform an elevation query at the centre of the rectangle\n      return sampleTerrain(terrainProvider, level, positions).then(function (results) {\n        // Add terrain elevation to camera altitude\n        const finalDestinationCartographic: any = {\n          longitude: destination.longitude,\n          latitude: destination.latitude,\n          height: destination.height + results[0].height\n        }\n        const finalDestination = viewer.scene.globe.ellipsoid.cartographicToCartesian(finalDestinationCartographic)\n        listener &&\n          ctx.emit('locationEvt', {\n            type: 'zoomIn',\n            camera: viewer.camera,\n            status: 'start'\n          })\n\n        camera.flyTo({\n          duration: props.duration,\n          destination: finalDestination,\n          complete: () => {\n            positioning.value = false\n            listener &&\n              ctx.emit('locationEvt', {\n                type: 'zoomIn',\n                camera: viewer.camera,\n                status: 'end'\n              })\n          },\n          cancel: () => {\n            positioning.value = false\n            listener &&\n              ctx.emit('locationEvt', {\n                type: 'zoomIn',\n                camera: viewer.camera,\n                status: 'cancel'\n              })\n          }\n        })\n      })\n    }\n\n    const describeWithoutUnderscores = (properties, nameProperty?) => {\n      let html = ''\n      if (properties instanceof Cesium.PropertyBag) {\n        // unwrap the properties from the PropertyBag\n        properties = properties.getValue(Cesium.JulianDate.now())\n      }\n      for (let key in properties) {\n        if (Object.prototype.hasOwnProperty.call(properties, key)) {\n          if (key === nameProperty) {\n            continue\n          }\n          let value = properties[key]\n          if (typeof value === 'object') {\n            value = describeWithoutUnderscores(value)\n          } else {\n            // value = formatPropertyValue(value)\n          }\n          key = key.replace(/_/g, ' ')\n          if (Cesium.defined(value)) {\n            html += '<tr><th>' + key + '</th><td>' + value + '</td></tr>'\n          }\n        }\n      }\n      if (html.length > 0) {\n        html = '<table class=\"cesium-infoBox-defaultTable\"><tbody>' + html + '</tbody></table>'\n      }\n      return html\n    }\n\n    const handleLocationError = (...args) => {\n      positioning.value = false\n      commonState.logger.error(...args)\n    }\n\n    const getLoadingCmp = () => {\n      switch (props.loadingType) {\n        case 'bars':\n          return VcSpinnerBars\n        case 'ios':\n          return VcSpinnerIos\n        case 'orbit':\n          return VcSpinnerOrbit\n        case 'oval':\n          return VcSpinnerOval\n        case 'puff':\n          return VcSpinnerPuff\n        case 'tail':\n          return VcSpinnerTail\n        default:\n          return VcSpinnerBars\n      }\n    }\n\n    const onTooltipBeforeShow = e => {\n      if (positioning.value) {\n        e.cancel = true\n      }\n    }\n\n    return () => {\n      if (canRender.value) {\n        const inner: VNode[] = []\n        inner.push(\n          h(VcIcon, {\n            name: props.icon,\n            size: props.size\n          })\n        )\n\n        inner.push(h('div', null, props.label))\n\n        if (isPlainObject(props.tooltip)) {\n          inner.push(\n            h(\n              VcTooltip,\n              {\n                ref: tooltipRef,\n                onBeforeShow: onTooltipBeforeShow,\n                ...props.tooltip\n              },\n              () => h('strong', null, myLocationTip.value)\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: `vc-my-location ${positionState.classes.value} ${props.customClass}`,\n            style: rootStyle\n          },\n          [\n            h(\n              VcBtn,\n              {\n                ref: btnRef,\n                size: props.size,\n                flat: props.flat,\n                stack: props.stack,\n                round: props.round,\n                loading: positioning.value,\n                dense: true,\n                style: { color: props.color, background: props.background },\n                onClick: onHandleClick\n              },\n              {\n                default: () => inner,\n                loading: () => h(getLoadingCmp())\n              }\n            )\n          ]\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\nexport type VcMyLocationEmits = typeof emits\nexport type VcMyLocationProps = {\n  /**\n   * Specify the position of the VcDistanceLegend.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcDistanceLegend horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the browser geolocation positioning parameters.\n   * Default value:\n   * {\n   *    enableHighAccuracy: true,\n   *    timeout: 5000,\n   *    maximumAge: 0\n   * }\n   */\n  geolocation?: PositionOptions\n  /**\n   * Specify the AMap positioning parameters. If set, use AMap api positioning first.\n   */\n  amap?: {\n    key: string\n    version: string\n    options: {\n      timeout?: number\n      convert?: false\n      noGeoLocation?: 0 | 1 | 2 | 3\n      needAddress?: boolean\n      extensions?: 'all' | 'base'\n    }\n    transformToWGS84?: boolean\n  }\n  /**\n   * Specify the id of the location point after the positioning is successful.\n   */\n  id?: string\n  /**\n   * Specify the color of the location point after the positioning is successful.\n   * Default value: #08ABD5\n   */\n  pointColor?: VcColor\n  /**\n   * Specify the pixel size of the location point after the positioning is successful.\n   * Default value: 12\n   */\n  pixelSize?: number\n  /**\n   * Specify the outline width of the location point after the positioning is successful.\n   * Default value: 3\n   */\n  outlineWidth?: number\n  /**\n   * Specify the outline color of the location point after the positioning is successful.\n   * Default value: #fff\n   */\n  outlineColor?: VcColor\n  /**\n   * Specify the sampling level when the altitude is automatically recognized based on the terrain after the positioning is successful.\n   * Default value: 6\n   */\n  level?: number\n  /**\n   * Specify the time to fly to the location point.\n   * Default value: 3\n   */\n  duration?: number\n  /**\n   * Specify the factor by which the anchor point is converted to a rectangle.\n   * Default: 0.01\n   */\n  factor?: number\n  /**\n   * The maximum height at the peak of the flight.\n   */\n  maximumHeight?: number\n  /**\n   * The offset from the target in the local east-north-up reference frame centered at the target. 2D or Columbus view works.\n   */\n  hpr?: [number, number, number]\n  /**\n   * Specify a custom API for positioning.\n   */\n  customAPI?: (errorCallback) => { lng: number; lat: number }\n  /**\n   * Specify the description of the location point\n   */\n  description?: (position, detail) => string\n  /**\n   * Specify the icon of the VcMyLocation.\n   * Default value: vc-icons-geolocation\n   */\n  icon?: string\n  /**\n   * Specify the size of the VcMyLocation.\n   * Default value: 24px\n   */\n  size?: string\n  /**\n   * Specify the css color of the VcMyLocation.\n   * Default value: #3f4854\n   */\n  color?: string\n  /**\n   * Specify the css background of the VcMyLocation.\n   * Default value: #fff\n   */\n  background?: string\n  /**\n   * Makes a circle shaped VcMyLocation.\n   */\n  round?: boolean\n  /**\n   * Use 'flat' design.\n   */\n  flat?: boolean\n  /**\n   * The text that will be shown on the VcMyLocation.\n   */\n  label?: string\n  /**\n   * Stack icon and label vertically instead of on same line.\n   */\n  stack?: boolean\n  /**\n   * The tooltip parameter.\n   */\n  tooltip?: false | VcTooltipProps\n  /**\n   * Specify the spinner style of the positioning transition\n   */\n  loadingType?: 'bars' | 'ios' | 'orbit' | 'oval' | 'puff' | 'tail'\n  /**\n   * Specify the customClass of the vc-my-location.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\n  /**\n   * Triggers before the VcCompass is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcCompass is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcCompass is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the positioning button is clicked.\n   */\n  onLocationEvt?: (evt: VcLocationEvt) => void\n}\n\nexport type VcMyLocationRef = VcComponentPublicInstance<VcMyLocationProps>\n"],"names":["defaultProps"],"mappings":"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"}