高德地图的标记使用

摘要:
˂ui buttonv if=“!
<template>
  <ui-container v-loading="sysLoading" :element-loading-text="syncLoadingText">
    <ui-main>
      <div class="row-wrap">
        <ui-row :gutter="24">
          <ui-col :span="18">
            <ui-card body-style="padding: 0px;">
              <!--使用地图-->
              <div id="map-container"></div>
            </ui-card>
          </ui-col>
          <ui-col :span="6">
            <ui-button v-if="!showAllPro" @click="backShow"><i class="el-icon-arrow-left"></i>返回查看总览</ui-button>
            <ui-card v-if="showTable" v-loading="projectLoading" body-style="padding: 0 10px 10px;">
              <div class="head-title">
                <span>{{proTitle}}</span>
              </div>
              <ui-table
                stripe border :fit="true" :data="projectData" highlight-current-row>
                <ui-table-column prop="projectName" label="项目名称" align="center"></ui-table-column>
                <ui-table-column prop="contractAmount" label="合同金额" align="center"></ui-table-column>
                <ui-table-column label="详情" align="center">
                  <template slot-scope="scope">
                    <ui-button size="mini" type="text" @click="modal('edit', scope.row)">查看</ui-button>
                  </template>
                </ui-table-column>
              </ui-table>
            </ui-card>
            <ui-card v-if="showAllPro" v-loading="allProjectLoading" body-style="padding: 0 10px 10px;">
              <div class="head-title">
                <span>所有省份项目总览</span>
              </div>
              <ui-table
                stripe border :fit="true" :data="allProjectList" highlight-current-row>
                <ui-table-column prop="projectAddress" label="省份" align="center"></ui-table-column>
                <ui-table-column prop="totalNumber" label="总项目数" align="center"></ui-table-column>
                <ui-table-column label="详情" align="center">
                  <template slot-scope="scope">
                    <ui-button size="mini" type="text" @click="showPro(scope.row)">查看</ui-button>
                  </template>
                </ui-table-column>
              </ui-table>
            </ui-card>
            <project-detail v-if="showProject" @resolve="modal" :form="detailData" :title="title"></project-detail>
          </ui-col>
        </ui-row>
      </div>
    </ui-main>
  </ui-container>
</template>
<script>
import AMap from 'AMap'
import project from '@/api/project'
import {formatTime} from '@/helper/filters'
import projectDetail from './projectDetail'
var map
var districtExplorer
var locMarker
var adcode
var currentAreaNode = null
export default {
components: { projectDetail },
name: 'home',
props: [],
methods: {
// 返回总览-switchAreaNode(100000)-全国的地址代码
backShow() {
districtExplorer.clearFeaturePolygons()
this.switchAreaNode(100000)
map.remove(locMarker)
this.showAllPro = true
this.showTable = false
},
showPro(row) {
this.showAllPro = false
this.getProject(row.projectAddress)
adcode = row.projectNumber ? row.projectNumber.slice(0,2) + '0000' : ''
this.switchAreaNode(adcode)
},
loadAreaNode(adcode, callback) {
districtExplorer.loadAreaNode(adcode, function(error, areaNode) {
if (error) {
if (callback) {
callback(error)
}
console.error(error)
return
}
let props = areaNode.getProps()
if (callback) {
callback(null, areaNode)
}
})
},
// 渲染地区
renderAreaPolygons(areaNode) {
  let fillColor = null
  if (areaNode === '100000') {
    fillColor = this.colors[0]
  } else {
    fillColor = this.colors[1]
  }
  //更新地图视野--会放大
  // map.setBounds(areaNode.getBounds(), null, null, true)
  //清除已有的绘制内容
  districtExplorer.clearFeaturePolygons()
  //绘制父区域(也就是当前点击的省份区域)
  districtExplorer.renderParentFeature(areaNode, {
    cursor: 'default',
    bubble: true,
    strokeColor: 'black', //线颜色
    strokeOpacity: 1, //线透明度
    strokeWeight: 1, //线宽
    fillColor: fillColor, //填充色
    fillOpacity: 0.35, //填充透明度
  })
},
// 选中的节点渲染
switchAreaNode(adcode, callback) {
  let _this = this
  if (currentAreaNode && ('' + currentAreaNode.getAdcode() === '' + adcode)) {
    return
  }
  this.loadAreaNode(adcode, function(error, areaNode) {
  if (error) {
    if (callback) {
      callback(error)
    }
    return
  }
  currentAreaNode = window.currentAreaNode = areaNode
  //设置当前使用的定位用节点
  districtExplorer.setAreaNodesForLocating([currentAreaNode])
    _this.refreshAreaNode(areaNode)
    if (callback) {
      callback(null, areaNode)
    }
  })
},
// 重新刷新地图页面节点
refreshAreaNode(areaNode) {
  districtExplorer.setHoverFeature(null)
  this.renderAreaPolygons(areaNode)
},
// 项目总揽
getAllProject() {
this.allProjectLoading = true
project.getAllProject().then(r => {
this.allProjectList = r.data.data
this.allProjectLoading = false
})
},
// 根据城市获取项目信息
getProject(params) {
this.showAllPro = false
if (params) {
this.proTitle = params + '-项目基本信息'
}
this.projectLoading = true
project.getProject(params).then(res => {
this.projectLoading = false
this.showTable = true
res.data.data.forEach(i => {
if (i.projectAddress) {
i['_projectAddress'] = JSON.parse(i.projectAddress).adname.split(' ')[0]
} else {
i['_projectAddress'] = '--'
}
})
this.projectData = res.data.data
}).catch(r => {
this.projectLoading = false
})
},
modal(type, data) {
switch (type) {
case 'edit':
this.showProject = true
if (data.projectName) {
this.title = data.projectName + '-详情'
} else {
this.title = '项目详情'
}
this.detailData = data
break
case 'dismiss':
this.showProject = false
break
case 'close':
this.showProject = false
break
}
},
formatTime(val) {
return formatTime(val)
},
listenMouseEvents() {
let _this = this
var isLocating = false
map.on('click', function(e) {
if (isLocating) {
return
}
isLocating = true
districtExplorer.locatePosition(e.lnglat, function(err, features) {
_this.lnglat = e.lnglat
console.log(e.lnglat)
isLocating = false
if (err) {
console.error(err)
return
}
_this.renderFeatures(features)
locMarker.setPosition(e.lnglat)
locMarker.setMap(map)
}, {
levelLimit: 2
})
})
},
  // 在地图的上选择城市渲染
  renderCountry(setBounds) {
    let _this = this
    districtExplorer.loadCountryNode(function(err, countryNode) {
      if (setBounds) {
        map.setBounds(countryNode.getBounds())
      }
      districtExplorer.renderParentFeature(countryNode, {
        cursor: 'default',
        bubble: true,
        strokeColor: 'black', //线颜色
        strokeOpacity: 1, //线透明度
        strokeWeight: 2, //线宽
        fillColor: _this.colors[0], //填充色
        fillOpacity: 0.35, //填充透明度
      })
    })
  },
  renderFeatures(features) {
    this.provinceName = features[1].properties.name
    this.getProject(this.provinceName)
    //清除已有的绘制内容
    districtExplorer.clearFeaturePolygons()
    if (!features.length) {
      renderCountry(false)
      return
    }
    for (var i = 0, len = features.length; i < len; i++) {
      let strokeColor = this.colors[i % this.colors.length]
      let fillColor = strokeColor
      districtExplorer.renderFeature(features[i], {
        cursor: 'default',
        bubble: true,
        strokeColor: strokeColor, //线颜色
        strokeOpacity: 1, //线透明度
        strokeWeight: 1, //线宽
        fillColor: fillColor, //填充色
        fillOpacity: 0.35, //填充透明度
      })
    }
  }
},
mounted() {
  this.getAllProject()
  map = new AMap.Map('map-container', {
  resizeEnable: true,
    zoom: 9
  })
  let _this = this
  AMapUI.loadUI(['geo/DistrictExplorer'], function(DistrictExplorer) {
  districtExplorer = new DistrictExplorer({
    map: map
  })
  locMarker = new AMap.Marker()
  _this.listenMouseEvents()
  _this.renderCountry(true)
})
},
data() {
return {
projectData: [],
allProjectList: [],
allProjectLoading: false,
detailData: null,
lnglat: null,
hackReset: true,
showAllPro: true,
showTable: false,
showProject: false,
sysLoading: false,
projectLoading: false,
syncLoadingText: null,
colors: ["#ff9900", "#109618", "#3b3eac"],
proTitle: '选择省份查看项目',
currentAreaNode: null,
provinceName: null
}
}
}
</script>
<style scoped lang="scss">
.head-title{
font-weight: 700;
color: #D0021B;
padding: 10px 0;
border-bottom: 1px solid #efecec;
}
.side-section{
border-bottom: 1px dashed rgb(193, 193, 193);
.side-time{
margin: 5px 0;
font-size: 12px;
color: gray;
}
.side-content{
color: #5E6977;
margin-top: 10px;
}
.side-img{
margin-top: 10px;
.item-cover{
object-fit: cover;
height: 80px;
58px;
}
}
}
.map-content{
height: 500px;
}
.swiper-container{
position: absolute;
background-color: #fff;
box-shadow: 0px 6px 10px rgba(208, 2, 27, .5);
left: 20%;
40%;
height: 40px;
line-height: 40px;
text-align: center;
p{
display: block;//块状显示
overflow: hidden;//隐藏文字
text-overflow: ellipsis;//显示...
white-space: nowrap; //不换行
100%;
}
}
.form-content{
padding: 0 0 0 20px;
}
#tipinput{
position: absolute;
top: 30px;
right: 30px;
}
#panel {
position: absolute;
background-color: white;
max-height: 90%;
overflow-y: auto;
top: 80px;
right: 10px;
280px;
z-index: 99;
}
.back_btn {
margin: 0 0px 10px;
cursor: pointer
}
 
</style>

免责声明:文章转载自《高德地图的标记使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Bootstrap自适应各种设备SwiftUI 官方教程(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL 优化之 ICP (index condition pushdown:索引条件下推)

ICP技术是在MySQL5.6中引入的一种索引优化技术。它能减少在使用 二级索引 过滤where条件时的回表次数 和 减少MySQL server层和引擎层的交互次数。在索引组织表中,使用二级索引进行回表的代价相比堆表中是要高一些的。相关文档地址:http://dev.mysql.com/doc/refman/5.6/en/index-condition-...

java 如何在pdf中生成表格

1、目标   在pdf中生成一个可变表头的表格,并向其中填充数据。通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格。   每天生成一个文件夹存储生成的pdf文件(文件夹的命名是年月日时间戳),如:20151110   生成的文件可能在毫秒级别,故文件的命名规则是"到毫秒的时间戳-uuid",如...

最简方式 表格编辑 基于 el-table

共下面5点 1.新增一个显示和隐藏的参数 2.在显示那边新增一个input框,用v-model绑定数据,用v-if来显示和隐藏 3.给之前的显示的span标签添加v-else 和上面形成if else 4.编辑和保存按钮同理,然后编辑按钮触发的任务将所有输入打开。即seen置为true 5.保存按钮同理,保存按钮触发的任务将所有输入关闭。即seen置为fa...

elementUI 表格 table 的表头错乱问题

页面中多组件开发时,如果页面中有表格的,table表格头出现表头错乱 // 全局设置1body .el-table th.gutter{ 2 display: table-cell!important; 3 } 4 5 body .el-table colgroup.gutter{ 6 display: table-cell!impor...

数据库之ODPS中sql语句指南

此篇博文为本人在实际工作中应用总结,转载请注明出处。 持续更新中 一、增 1、增加一列(向csp_hsy_count_info表中增加sale_qty列) ALTER TABLE csp_hsy_count_info ADD COLUMNS (sale_qty BIGINT); 2.增加一张表(表为fact_hsy_panter_pay_org,分区为p_...

ORACLE 数据、表误删恢复(转)

今天主要以oracle数据库为例,介绍关于表中数据删除的解决办法。(不考虑全库备份和利用归档日志)删除表中数据有三种方法:·delete(删除一条记录)·drop或truncate删除表格中数据 1.delete误删除的解决方法原理: 利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接...