电网一张图地图添加弹框(mapBox可参考)

一、按照一张图示例引入地图资源

windwo.map = initNarMapMap({
  container: 'NarMap', // 地图容器的id
  style: 'aegis://style/aegis/StreetsDark-v2', // 使用的地图样式
  center: [-74.5, 40], // 初始中心点坐标
  zoom: 9 // 初始缩放级别
}); 

二、弹框添加和数据传输

// 添加弹框
  const tipObj = {
 		tipTitle:"这是弹框标题",
 		tipData:[{key:"500kV线路",value:"50000"},{key:"±800kV线路",value:"80000"}]
 };//你需要展示的值,格式可以自定义,只需在弹框组件内按需索取即可
  const lonLat = [29.35,106.33]
  const elementPopup = document.createElement('div')
  //mapTipPopUp---你的弹框组件
  const popupNode = createVNode(mapTipPopUp, {
    tipParamData: tipObj,
  })
  render(popupNode, elementPopup)
  window.mapPopup.setLngLat(lonLat)
    .setMaxWidth('400px')
    .setDOMContent(elementPopup)
    .addTo(window.map)

三、弹框组件

<!-- tip提示框组件 -->
<template>
  <div id="popup" class="ol-popup">
    <div class="mapTip" id="moveMapTabId">
      <div class="tipTitle" v-show="tipParamData.tipTitle">
        <div>{{ tipParamData.tipTitle }}</div>
        <div class="close" @click="close"><i class="el-icon-close"> </i></div>
      </div>
      <div class="tipContent">
        <table>
          <tr v-for="each in tipParamData.tipData" :key="each.key" class="tip-item">
            <td class="labelField">{{ each.key }}:</td>
            <td class="valueField"  :title="each.value">{{ each.value }}</td>
          </tr>
        </table>
      </div>
    </div>
  </div>
</template>

<script>
  export default {
    name: "NariMapTipCom",
    props: ['tipParamData', 'nariMapTipMethods','viewImgCallback','viewDetailCallback'],
    data() {
      return {
        viewImgUrls: [],
        imgIndex: 0,
        isShowImg: false
      }
    },
    methods: {
      close() {
        window.mapPopup.remove();
      }
    }
  }
</script>

<style scoped>
//你的样式
</style>
要在地图添加,你可以使用Vue.js和一些流行的地图API(如Google Maps API或Mapbox)来实现。下面是一个简单的示例: 首先,在Vue组件中,你需要引入地图API并创建地图对象: ```javascript import {mapState} from 'vuex'; import * as mapboxgl from 'mapbox-gl'; export default { data() { return { map: null, popup: null } }, mounted() { mapboxgl.accessToken = 'YOUR_ACCESS_TOKEN'; this.map = new mapboxgl.Map({ container: this.$refs.mapContainer, style: 'mapbox://styles/mapbox/streets-v11', center: [-96, 37.8], zoom: 3 }); }, computed: { ...mapState(['markers']) } } ``` 在上面的代码中,我们创建了一个Mapbox地图,并将其挂载到Vue组件的DOM元素中。我们还定义了一个`popup`变量,用于存储出窗口对象。 接下来,我们可以在地图添加标记,并在用户点击标记时显示出窗口: ```javascript mounted() { // ... this.markers.forEach(marker => { const el = document.createElement('div'); el.className = 'marker'; el.style.backgroundImage = `url(${marker.icon})`; const popup = new mapboxgl.Popup({ offset: 25 }) .setHTML(`<h3>${marker.title}</h3><p>${marker.description}</p>`); new mapboxgl.Marker(el) .setLngLat(marker.coordinates) .setPopup(popup) .addTo(this.map); }); }, ``` 在上面的代码中,我们遍历了一个名为`markers`的状态对象,并为每个标记创建一个HTML元素和一个出窗口。我们在地图上使用`mapboxgl.Marker`对象将标记添加地图中,并将出窗口与标记关联。当用户点击标记时,出窗口将显示。 最后,我们需要在Vue组件的模板中添加一个地图容器元素: ```html <template> <div class="map-container" ref="mapContainer"></div> </template> ``` 通过这些步骤,你就可以在Vue.js应用程序中向地图添加出窗口了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值