Newer
Older
smartwell_front / src / components / CMap / components / cmapMarker.vue
StephanieGitHub on 24 Feb 2020 3 KB MOD:删除无用代码
<template>
  <div class="markerDiv">
    <slot/>
  </div>
</template>

<script>
import commonMixin from '../base/mixins/common.js'
import { createIcon } from '../base/factory.js'
export default {
  name: 'CmapMarker',
  mixins: [commonMixin('overlay')],
  props: {
    position: { // marker位置
      type: Object,
      required: true
    },
    title: { // 标签
      type: String,
      default: ''
    },
    size: { // marker大小
      type: Array,
      default: function() {
        return [16, 28]
      }
    },
    anchor: { // 位移
      type: Array,
      default: function() {
        return [8, 28]
      }
    },
    popupTemplate: {
      type: String,
      default: '<div>hello test</div>'
    },
    popupAnchor: { // 弹窗位移
      type: Array,
      default: function() {
        return [0, -14]
      }
    },
    visible: {
      type: Boolean,
      default: true
    },
    icon: { // 图标
      type: String,
      default: 'http://satellite.casm.ac.cn:8020/geowinmap/pages/labsl/module/base/images/marker.png'
    },
    massClear: { // 全部清除
      type: Boolean,
      default: false
    },
    top: { // 是否置顶
      type: Boolean,
      default: false
    },
    zIndex: { // zindex
      type: Number,
      default: 500
    }
  },
  data() {
    return {
      showInfoWindow: false
    }
  },
  watch: {
    visible(val, oldVal) {
      if (!val === oldVal) {
        if (val) { // 需要显示
          // this.load()
        } else { // 需要隐藏

        }
      }
    },
    showInfoWindow(val) {
      if (val) {
        this.showInfoWindow()
      } else {
        this.closeInfoWindow()
      }
    }
  },
  methods: {
    load() {
      console.log('cmap Marker load function')
      const { mapLayers, position, size, icon, anchor, popupAnchor } = this
      if (this.marker) {
        mapLayers.removeOverlay(this.marker)
      }
      const options = {
        url: icon,
        size: size,
        anchor: anchor,
        popupAnchor: popupAnchor
      }
      const cmapIcon = createIcon(options)
      const opts = {
        icon: cmapIcon,
        title: this.title,
        draggable: false
      }
      // const overlay = new CMarker(new CLatLng(position.lat, position.lng), opts)
      const overlay = mapLayers.drawMarker(new CLatLng(position.lat, position.lng), opts)
      this.overlay = overlay
      CEvent.addListener(overlay, 'click', function() {
        console.log('click overlay')
        mapLayers.openInfoWindow()
        overlay.bindPopup("<div style='width:200px;height:100px;'>你好 ,Welcome to CASM </div>")
        overlay.openPopup()
        // overlay.bindPopup(popup)
        // overlay.openPopup()
      })
      // mapLayers.addOverlay(overlay)
    },
    changeInfoWindow() {
      console.log('changeInfoWindow')
      this.showInfoWindow = !this.showInfoWindow
    },
    openInfoWindow() {
      console.log('openInfoWindow')
      const { overlay, popupTemplate } = this
      overlay.bindPopup(popupTemplate)
      overlay.openPopup()
    },
    closeInfoWindow() {
      console.log('closeInfoWindow')
      const { overlay } = this
      overlay.closePopup()
    }
  }
}
</script>

<style scoped>

</style>