|
|
@@ -1,176 +1,568 @@
|
|
|
-<template lang="html">
|
|
|
- <div id="load">
|
|
|
- <!--存放百度地图容器-->
|
|
|
- <div id="container"></div>
|
|
|
+<!-- -->
|
|
|
+<template>
|
|
|
+ <div class="mapShow_box" :style="'height:' + fullHeight + 'px'">
|
|
|
+ <!-- 地图加载动画 -->
|
|
|
+ <div
|
|
|
+ v-if="loadinAShow"
|
|
|
+ class="loading_boxA"
|
|
|
+ :style="'height:' + fullHeight + 'px'"
|
|
|
+ >
|
|
|
+ <div class="loading_boxA_div">
|
|
|
+ <img src="../../../static/dongh.gif" alt class="loading_gif" />
|
|
|
+ <div class="loadingA_text">地图加载中,请稍后...</div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <!-- 百度地图 -->
|
|
|
+ <div class="mapbox">
|
|
|
+ <baidu-map
|
|
|
+ :style="'height:' + fullHeight + 'px'"
|
|
|
+ locationIcon
|
|
|
+ class="map"
|
|
|
+ :double-click-zoom="true"
|
|
|
+ @ready="handler"
|
|
|
+ :center="center"
|
|
|
+ :zoom="150"
|
|
|
+ :map-click="false"
|
|
|
+ :mapStyle="mapStyle"
|
|
|
+ @touchmove="move()"
|
|
|
+ @touchend="end()"
|
|
|
+ >
|
|
|
+ <bm-geolocation
|
|
|
+ :locationIcon="{
|
|
|
+ url: require('../../../static/dingwei.png'),
|
|
|
+ size: { width: 25, height: 40 },
|
|
|
+ }"
|
|
|
+ @locationSuccess="getLoctionSuccess"
|
|
|
+ @locationError="getLoctionError"
|
|
|
+ anchor="BMAP_ANCHOR_BOTTOM_RIGHT"
|
|
|
+ :showAddressBar="false"
|
|
|
+ :autoLocation="true"
|
|
|
+ ></bm-geolocation>
|
|
|
+ <bml-marker-clusterer :averageCenter="true">
|
|
|
+ <div v-for="(marker, i) of markers" :key="i">
|
|
|
+ <!-- <bm-marker
|
|
|
+ class="dian"
|
|
|
+ :icon="{url: marker.url, size: { width: 30, height: 40 }}"
|
|
|
+ :dragging="false"
|
|
|
+ animation="BMAP_ANIMATION_BOUNCE"
|
|
|
+ :position="{lng: marker.lng, lat: marker.lat}"
|
|
|
+ @click="infoWindowOpen(marker, i)"
|
|
|
+ > -->
|
|
|
+ <bm-marker
|
|
|
+ class="dian"
|
|
|
+ :icon="{ url: marker.url, size: { width: 300, height: 400 } }"
|
|
|
+ :dragging="false"
|
|
|
+ animation="BMAP_ANIMATION_BOUNCE"
|
|
|
+ :position="{ lng: marker.lng, lat: marker.lat }"
|
|
|
+ @click="infoWindowOpen(marker, i)"
|
|
|
+ >
|
|
|
+ <!-- <bm-label
|
|
|
+ @click="details(marker.id, marker.ret)"
|
|
|
+ v-if="nameShow"
|
|
|
+ :content="marker.name"
|
|
|
+ :labelStyle="{
|
|
|
+ color: 'DarkSeaGreen',
|
|
|
+ fontSize: '22px',
|
|
|
+ border: 0,
|
|
|
+ }"
|
|
|
+ :offset="{ width: -35, height: 30 }"
|
|
|
+ /> -->
|
|
|
+
|
|
|
+ <bm-label
|
|
|
+ @close="infoWindowClose(marker)"
|
|
|
+ @open="infoWindowOpen(marker)"
|
|
|
+ v-if="nameShow"
|
|
|
+ :content="1"
|
|
|
+ :labelStyle="{
|
|
|
+ color: 'DarkSeaGreen',
|
|
|
+ fontSize: '22px',
|
|
|
+ border: 0,
|
|
|
+ }"
|
|
|
+ :offset="{ width: -35, height: 30 }"
|
|
|
+ />
|
|
|
+
|
|
|
+ <!-- <bm-label
|
|
|
+ @click="details(marker.id, marker.ret)"
|
|
|
+ :content="marker.name"
|
|
|
+ :labelStyle="{color: 'DarkSeaGreen', fontSize : '22px', border: 0}"
|
|
|
+ :offset="{width: -35, height: 30}"
|
|
|
+ :show="marker.showFlag"
|
|
|
+ /> -->
|
|
|
+ </bm-marker>
|
|
|
+ </div>
|
|
|
+ </bml-marker-clusterer>
|
|
|
+ <!--地图类型-->
|
|
|
+ <bm-map-type
|
|
|
+ :map-types="['BMAP_NORMAL_MAP', 'BMAP_HYBRID_MAP']"
|
|
|
+ anchor="BMAP_ANCHOR_TOP_LEFT"
|
|
|
+ ></bm-map-type>
|
|
|
+ <!--地图缩放-->
|
|
|
+ <!-- <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-navigation> -->
|
|
|
+ </baidu-map>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 底部导航 -->
|
|
|
+ <bottomNav v-show="botNav"></bottomNav>
|
|
|
+ <!-- 底部导航 -->
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+// 按需引入点聚合
|
|
|
+import { BmlMarkerClusterer } from "vue-baidu-map";
|
|
|
+// 引入marker
|
|
|
+import BmMarker from "vue-baidu-map/components/overlays/Marker";
|
|
|
+// import { BmGeolocation, BmNavigation, BmMapType } from "vue-baidu-map";
|
|
|
+import { BmGeolocation, BmNavigation } from "vue-baidu-map";
|
|
|
+import bottomNav from "../bottomNav/bottomNav"; //底部导航栏
|
|
|
+
|
|
|
+const markers = [];
|
|
|
+const carList = [{}];
|
|
|
export default {
|
|
|
+ // name: "mapShow",
|
|
|
+ name: "Bmaptrace",
|
|
|
+ //import引入的组件需要注入到对象中才能使用
|
|
|
+ components: {
|
|
|
+ BmlMarkerClusterer,
|
|
|
+ BmMarker,
|
|
|
+ // 手动定位控件
|
|
|
+ BmGeolocation,
|
|
|
+ // 地图放大缩小控件
|
|
|
+ BmNavigation,
|
|
|
+ // marker控件
|
|
|
+ BmMarker,
|
|
|
+ bottomNav,
|
|
|
+ BmNavigation,
|
|
|
+ // BmMapType,
|
|
|
+ },
|
|
|
data() {
|
|
|
+ //这里存放数据
|
|
|
+ const self = this;
|
|
|
return {
|
|
|
- // 热力图的点数据,lng:点的经度 点的lat纬度 count:点的热力程度
|
|
|
- points: [
|
|
|
- { lng: 123.418261, lat: 41.921984, count: 50 },
|
|
|
- { lng: 123.423332, lat: 41.916532, count: 51 },
|
|
|
- { lng: 123.419787, lat: 41.930658, count: 15 },
|
|
|
- { lng: 123.418455, lat: 41.920921, count: 40 },
|
|
|
- { lng: 123.418843, lat: 41.915516, count: 100 },
|
|
|
- { lng: 123.42546, lat: 41.918503, count: 6 },
|
|
|
- { lng: 123.423289, lat: 41.919989, count: 18 },
|
|
|
- { lng: 123.418162, lat: 41.915051, count: 80 },
|
|
|
- { lng: 123.422039, lat: 41.91782, count: 11 },
|
|
|
- { lng: 123.41387, lat: 41.917253, count: 7 },
|
|
|
- { lng: 123.41773, lat: 41.919426, count: 42 },
|
|
|
- { lng: 123.421107, lat: 41.916445, count: 4 },
|
|
|
- { lng: 123.417521, lat: 41.917943, count: 27 },
|
|
|
- { lng: 123.419812, lat: 41.920836, count: 23 },
|
|
|
- { lng: 123.420682, lat: 41.91463, count: 60 },
|
|
|
- { lng: 123.415424, lat: 41.924675, count: 8 },
|
|
|
- { lng: 123.419242, lat: 41.914509, count: 15 },
|
|
|
- { lng: 123.422766, lat: 41.921408, count: 25 },
|
|
|
- { lng: 123.421674, lat: 41.924396, count: 21 },
|
|
|
- { lng: 123.427268, lat: 41.92267, count: 1 },
|
|
|
- { lng: 123.417721, lat: 41.920034, count: 51 },
|
|
|
- { lng: 123.412456, lat: 41.92667, count: 7 },
|
|
|
- { lng: 123.420432, lat: 41.919114, count: 11 },
|
|
|
- { lng: 123.425013, lat: 41.921611, count: 35 },
|
|
|
- { lng: 123.418733, lat: 41.931037, count: 22 },
|
|
|
- { lng: 123.419336, lat: 41.931134, count: 4 },
|
|
|
- { lng: 123.413557, lat: 41.923254, count: 5 },
|
|
|
- { lng: 123.418367, lat: 41.92943, count: 3 },
|
|
|
- { lng: 123.424312, lat: 41.919621, count: 100 },
|
|
|
- { lng: 123.423874, lat: 41.919447, count: 87 },
|
|
|
- { lng: 123.424225, lat: 41.923091, count: 32 },
|
|
|
- { lng: 123.417801, lat: 41.921854, count: 44 },
|
|
|
- { lng: 123.417129, lat: 41.928227, count: 21 },
|
|
|
- { lng: 123.426426, lat: 41.922286, count: 80 },
|
|
|
- { lng: 123.421597, lat: 41.91948, count: 32 },
|
|
|
- { lng: 123.423895, lat: 41.920787, count: 26 },
|
|
|
- { lng: 123.423563, lat: 41.921197, count: 17 },
|
|
|
- { lng: 123.417982, lat: 41.922547, count: 17 },
|
|
|
- { lng: 123.426126, lat: 41.921938, count: 25 },
|
|
|
- { lng: 123.42326, lat: 41.915782, count: 100 },
|
|
|
- { lng: 123.419239, lat: 41.916759, count: 41 },
|
|
|
- { lng: 123.417185, lat: 41.929123, count: 11 },
|
|
|
- { lng: 123.417237, lat: 41.927518, count: 9 },
|
|
|
- { lng: 123.417784, lat: 41.915754, count: 47 },
|
|
|
- { lng: 123.420193, lat: 41.917061, count: 52 },
|
|
|
- { lng: 123.422735, lat: 41.915619, count: 100 },
|
|
|
- { lng: 123.418495, lat: 41.915958, count: 46 },
|
|
|
- { lng: 123.416292, lat: 41.931166, count: 9 },
|
|
|
- { lng: 123.419916, lat: 41.924055, count: 8 },
|
|
|
- { lng: 123.42189, lat: 41.921308, count: 11 },
|
|
|
- { lng: 123.413765, lat: 41.929376, count: 3 },
|
|
|
- { lng: 123.418232, lat: 41.920348, count: 50 },
|
|
|
- { lng: 123.417554, lat: 41.930511, count: 15 },
|
|
|
- { lng: 123.418568, lat: 41.918161, count: 23 },
|
|
|
- { lng: 123.413461, lat: 41.926306, count: 3 },
|
|
|
- { lng: 123.42232, lat: 41.92161, count: 13 },
|
|
|
- { lng: 123.4174, lat: 41.928616, count: 6 },
|
|
|
- { lng: 123.424679, lat: 41.915499, count: 21 },
|
|
|
- { lng: 123.42171, lat: 41.915738, count: 29 },
|
|
|
- { lng: 123.417836, lat: 41.916998, count: 99 },
|
|
|
- { lng: 123.420755, lat: 41.928001, count: 10 },
|
|
|
- { lng: 123.414077, lat: 41.930655, count: 14 },
|
|
|
- { lng: 123.426092, lat: 41.922995, count: 16 },
|
|
|
- { lng: 123.41535, lat: 41.931054, count: 15 },
|
|
|
- { lng: 123.413022, lat: 41.921895, count: 13 },
|
|
|
- { lng: 123.415551, lat: 41.913373, count: 17 },
|
|
|
- { lng: 123.421191, lat: 41.926572, count: 1 },
|
|
|
- { lng: 123.419612, lat: 41.917119, count: 9 },
|
|
|
- { lng: 123.418237, lat: 41.921337, count: 54 },
|
|
|
- { lng: 123.423776, lat: 41.921919, count: 26 },
|
|
|
- { lng: 123.417694, lat: 41.92536, count: 17 },
|
|
|
- { lng: 123.415377, lat: 41.914137, count: 19 },
|
|
|
- { lng: 123.417434, lat: 41.914394, count: 43 },
|
|
|
- { lng: 123.42588, lat: 41.922622, count: 27 },
|
|
|
- { lng: 123.418345, lat: 41.919467, count: 8 },
|
|
|
- { lng: 123.426883, lat: 41.917171, count: 3 },
|
|
|
- { lng: 123.423877, lat: 41.916659, count: 34 },
|
|
|
- { lng: 123.415712, lat: 41.915613, count: 14 },
|
|
|
- { lng: 123.419869, lat: 41.931416, count: 12 },
|
|
|
- { lng: 123.416956, lat: 41.925377, count: 11 },
|
|
|
- { lng: 123.42066, lat: 41.925017, count: 38 },
|
|
|
- { lng: 123.416244, lat: 41.920215, count: 91 },
|
|
|
- { lng: 123.41929, lat: 41.915908, count: 54 },
|
|
|
- { lng: 123.422116, lat: 41.919658, count: 21 },
|
|
|
- { lng: 123.4183, lat: 41.925015, count: 15 },
|
|
|
- { lng: 123.421969, lat: 41.913527, count: 3 },
|
|
|
- { lng: 123.422936, lat: 41.921854, count: 24 },
|
|
|
- { lng: 123.41905, lat: 41.929217, count: 12 },
|
|
|
- { lng: 123.424579, lat: 41.914987, count: 57 },
|
|
|
- { lng: 123.42076, lat: 41.915251, count: 70 },
|
|
|
- { lng: 123.425867, lat: 41.918989, count: 8 },
|
|
|
- ],
|
|
|
- map: "", // 保存地图实例
|
|
|
- centerLng: "123.418261", // 经度
|
|
|
- centerLat: "41.921984", // 纬度
|
|
|
- heatmapOverlay: {}, // 热力图覆盖物
|
|
|
+ show: false,
|
|
|
+ botNav: true, //底部导航
|
|
|
+ isShow: true, // 判断账号详情是否有数据或是账号类型是否为游客登录
|
|
|
+ loadinAShow: true, //地图加载动画
|
|
|
+ fullHeight: document.documentElement.clientHeight,
|
|
|
+ drawer: false, //抽屉弹出显示
|
|
|
+ direction: "ltr", //抽屉弹框方向
|
|
|
+ dialogVisible: false, //选择昆虫还是病害识别
|
|
|
+ result: "", //用户点击选中的图片
|
|
|
+ loadingShow: false, //请求等待动画
|
|
|
+ sHow: false, //预览对象
|
|
|
+ redata: [], //用户详情数据
|
|
|
+ dengLV: true, //判断账号类型是游客还是用户;如果是游客那就将更多和搜索框隐藏
|
|
|
+ numData: "", //游客账号的识别体验次数
|
|
|
+ aaa: "1111",
|
|
|
+ //百度地图
|
|
|
+ // 初始化地图中心点
|
|
|
+ center: null,
|
|
|
+ BMap: "",
|
|
|
+ map: "",
|
|
|
+ markers,
|
|
|
+ carList,
|
|
|
+ show: false,
|
|
|
+ redata: [], //后端传来的数据
|
|
|
+ active: false,
|
|
|
+ latA: "",
|
|
|
+ lngA: "",
|
|
|
+ nameShow: false,
|
|
|
+ // mapStyle: {
|
|
|
+ // styleJson: [
|
|
|
+ // {
|
|
|
+ // featureType: "all",
|
|
|
+ // elementType: "geometry",
|
|
|
+ // stylers: {
|
|
|
+ // // hue: "#007fff",
|
|
|
+ // // hue: "#eb8f16",
|
|
|
+ // hue: "#68f8bc",
|
|
|
+ // saturation: 89,
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // featureType: "water",
|
|
|
+ // elementType: "all",
|
|
|
+ // stylers: {
|
|
|
+ // color: "#ffffff",
|
|
|
+ // },
|
|
|
+ // },
|
|
|
+ // ],
|
|
|
+ // },
|
|
|
+
|
|
|
+ // 黑色
|
|
|
+ mapStyle: {
|
|
|
+ styleJson: [
|
|
|
+ {
|
|
|
+ featureType: "land",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ color: "#212121",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "building",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ color: "#2b2b2b",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "highway",
|
|
|
+ elementType: "all",
|
|
|
+ stylers: {
|
|
|
+ lightness: -42,
|
|
|
+ saturation: -91,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "arterial",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ lightness: -77,
|
|
|
+ saturation: -94,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "green",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ color: "#1b1b1b",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "water",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ color: "#181818",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "subway",
|
|
|
+ elementType: "geometry.stroke",
|
|
|
+ stylers: {
|
|
|
+ color: "#181818",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "railway",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ lightness: -52,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "all",
|
|
|
+ elementType: "labels.text.stroke",
|
|
|
+ stylers: {
|
|
|
+ color: "#313131",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "all",
|
|
|
+ elementType: "labels.text.fill",
|
|
|
+ stylers: {
|
|
|
+ color: "#8b8787",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "manmade",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ color: "#1b1b1b",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "local",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ lightness: -75,
|
|
|
+ saturation: -91,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "subway",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ lightness: -65,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "railway",
|
|
|
+ elementType: "all",
|
|
|
+ stylers: {
|
|
|
+ lightness: -40,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ featureType: "boundary",
|
|
|
+ elementType: "geometry",
|
|
|
+ stylers: {
|
|
|
+ color: "#8b8787",
|
|
|
+ weight: "1",
|
|
|
+ lightness: -29,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+
|
|
|
+ //设置地图详细信息
|
|
|
+ address: "", //位置详细信息
|
|
|
+ jgNameDialog: false,
|
|
|
+ show: false,
|
|
|
+ postionMap: {
|
|
|
+ //地图坐标
|
|
|
+ lng: 120.211486,
|
|
|
+ lat: 30.256576,
|
|
|
+ },
|
|
|
+ location: "",
|
|
|
+ keyword: "", //搜索框关键词
|
|
|
+ // zoom: 12.8, //放大比例
|
|
|
+ address: "", //位置详细信息
|
|
|
+ add: {
|
|
|
+ siteName: "",
|
|
|
+ site: "",
|
|
|
+ jd: "",
|
|
|
+ wd: "",
|
|
|
+ desce: "",
|
|
|
+ type: "",
|
|
|
+ jgName: "",
|
|
|
+ jgNum: "",
|
|
|
+ },
|
|
|
+ organizationData: [],
|
|
|
+ jgName: "",
|
|
|
+ jgNum: "",
|
|
|
};
|
|
|
},
|
|
|
- methods: {
|
|
|
- // 创建和初始化地图函数
|
|
|
- initMap() {
|
|
|
- this.createMap(); // 创建地图
|
|
|
- this.initHeatMap(); // 添加热力图覆盖物
|
|
|
+ //监听属性 类似于data概念
|
|
|
+ computed: {},
|
|
|
+ //监控data中的数据变化
|
|
|
+ watch: {
|
|
|
+ fullHeight(val) {
|
|
|
+ //监控浏览器高度变化
|
|
|
+ if (!this.timer) {
|
|
|
+ this.fullHeight = val;
|
|
|
+ this.timer = true;
|
|
|
+ let that = this;
|
|
|
+ setTimeout(function () {
|
|
|
+ //防止过度调用监测事件,导致卡顿
|
|
|
+ that.timer = false;
|
|
|
+ }, 400);
|
|
|
+ }
|
|
|
},
|
|
|
- // 方法 - 创建地图
|
|
|
- createMap() {
|
|
|
- // 在百度地图容器中创建地图实例
|
|
|
- let map = new BMap.Map("container");
|
|
|
- // 将map变量存储在全局
|
|
|
- this.map = map;
|
|
|
- // 设定地图的中心点和坐标
|
|
|
- let point = new BMap.Point(this.centerLng, this.centerLat);
|
|
|
- // 设置中心点坐标和地图级别
|
|
|
- this.map.centerAndZoom(point, 15);
|
|
|
- // 允许滚轮缩放
|
|
|
- this.map.enableScrollWheelZoom(point, 15);
|
|
|
- // 添加左上角缩放比例尺(offset: new BMap.Size(0, 0)为比例尺的坐标位置)
|
|
|
- var opts = { offset: new BMap.Size(10, 10) };
|
|
|
- this.map.addControl(new BMap.NavigationControl(opts));
|
|
|
- // 设置地图默认缩放比例
|
|
|
- this.map.setZoom(15);
|
|
|
+ },
|
|
|
+ //方法集合
|
|
|
+ methods: {
|
|
|
+ //动态获取浏览器高度
|
|
|
+ get_boderHeight() {
|
|
|
+ const that = this;
|
|
|
+ window.onresize = () => {
|
|
|
+ return (() => {
|
|
|
+ window.fullHeight = document.documentElement.clientHeight;
|
|
|
+ that.fullHeight = window.fullHeight;
|
|
|
+ })();
|
|
|
+ };
|
|
|
},
|
|
|
- // 方法 - 添加热力图覆盖物
|
|
|
- initHeatMap() {
|
|
|
- this.heatmapOverlay = new BMapLib.HeatmapOverlay({
|
|
|
- // 热力图的每个点的半径大小
|
|
|
- radius: BMAP_POINT_SIZE_SMALL * 4,
|
|
|
- // 热力的透明度0~1
|
|
|
- opacity: 0.8,
|
|
|
- // 其中 key 表示插值的位置0~1,value 为颜色值
|
|
|
- gradient: {
|
|
|
- 0: "rgb(102, 255, 0)",
|
|
|
- 0.5: "rgb(255, 170, 0)",
|
|
|
- 1: "rgb(255, 0, 0)",
|
|
|
+
|
|
|
+ //百度地图事件
|
|
|
+ //地图初始化
|
|
|
+ handler({ BMap, map }) {
|
|
|
+ const _this = this;
|
|
|
+ // 获取自动定位方法
|
|
|
+ var geolocation = new BMap.Geolocation();
|
|
|
+ // 获取逆解析方法实例
|
|
|
+ this.myGeo = new BMap.Geocoder();
|
|
|
+ // 获取自动定位获取的坐标信息
|
|
|
+ geolocation.getCurrentPosition(
|
|
|
+ function (r) {
|
|
|
+ _this.center = {
|
|
|
+ lng: r.point.lng,
|
|
|
+ lat: r.point.lat,
|
|
|
+ };
|
|
|
+ _this.point = {
|
|
|
+ lng: r.point.lng,
|
|
|
+ lat: r.point.lat,
|
|
|
+ };
|
|
|
+ localStorage.setItem("jingdu", _this.point.lng); //存经纬度
|
|
|
+ localStorage.setItem("weidu", _this.point.lat);
|
|
|
+ _this.ceshi(r);
|
|
|
},
|
|
|
+
|
|
|
+ { enableHighAccuracy: true }
|
|
|
+ );
|
|
|
+ map.enableScrollWheelZoom(true);
|
|
|
+ _this.BMap = BMap;
|
|
|
+ _this.map = map;
|
|
|
+ },
|
|
|
+
|
|
|
+ //点聚合
|
|
|
+ addr() {
|
|
|
+ let bb = this.redata;
|
|
|
+ for (let i = 0; i < bb.length; i++) {
|
|
|
+ const position = {
|
|
|
+ lng: this.redata[i].lng,
|
|
|
+ lat: this.redata[i].lat,
|
|
|
+ url: "./static/insect.png",
|
|
|
+ // url: "./static/55.jpg",
|
|
|
+ name: this.redata[i].name,
|
|
|
+ id: this.redata[i].id,
|
|
|
+ ret: this.redata[i].ret,
|
|
|
+ showFlag: false,
|
|
|
+ };
|
|
|
+ const position1 = {
|
|
|
+ lng: this.redata[i].lng,
|
|
|
+ lat: this.redata[i].lat,
|
|
|
+ url: "./static/insect.png",
|
|
|
+ // url: "./static/55.jpg",
|
|
|
+ name: this.redata[i].name,
|
|
|
+ id: this.redata[i].id,
|
|
|
+ ret: this.redata[i].ret,
|
|
|
+ showFlag: false,
|
|
|
+ };
|
|
|
+ if (i % 2 === 0) {
|
|
|
+ markers.push(position);
|
|
|
+ } else {
|
|
|
+ markers.push(position1);
|
|
|
+ }
|
|
|
+ // console.log(markers)
|
|
|
+ }
|
|
|
+ const carList = [{}];
|
|
|
+ },
|
|
|
+
|
|
|
+ //手动定位成功回调
|
|
|
+ getLoctionSuccess(e) {
|
|
|
+ this.lngA = e.point.lng;
|
|
|
+ this.latA = e.point.lat;
|
|
|
+ localStorage.setItem("jingdu", this.lngA); //存经纬度
|
|
|
+ localStorage.setItem("weidu", this.latA);
|
|
|
+
|
|
|
+ this.show = true;
|
|
|
+ this.postionMap.lng = e.point.lng; //通过 e.point.lng获取经度
|
|
|
+ this.postionMap.lat = e.point.lat; //通过 e.point.lat获取纬度
|
|
|
+ this.add.jd = e.point.lng;
|
|
|
+ this.add.wd = e.point.lat;
|
|
|
+
|
|
|
+ let geocoder = new BMap.Geocoder(); //创建地址解析器的实例
|
|
|
+ geocoder.getLocation(e.point, (rs) => {
|
|
|
+ this.add.site = rs.address;
|
|
|
+ //地址描述(string)=
|
|
|
+ // console.log(rs.address); //这里打印可以看到里面的详细地址信息,可以根据需求选择想要的
|
|
|
+ // console.log(rs.addressComponents);//结构化的地址描述(object)
|
|
|
+ // console.log(rs.addressComponents.province); //省
|
|
|
+ // console.log(rs.addressComponents.city); //城市
|
|
|
+ // console.log(rs.addressComponents.district); //区县
|
|
|
+ // console.log(rs.addressComponents.street); //街道
|
|
|
+ // console.log(rs.addressComponents.streetNumber); //门牌号
|
|
|
+ // console.log(rs.surroundingPois); //附近的POI点(array)
|
|
|
+ // console.log(rs.business); //商圈字段,代表此点所属的商圈(string)
|
|
|
+
|
|
|
+ let a = rs.addressComponents.province;
|
|
|
+ let b = rs.addressComponents.city;
|
|
|
+ let c = rs.addressComponents.district;
|
|
|
+ let d = rs.addressComponents.street;
|
|
|
+ let e = rs.addressComponents.streetNumber;
|
|
|
+ localStorage.setItem("dizhi", a + b + c + d + e); //存地址
|
|
|
});
|
|
|
- // 清除图层(每次重新调用需要清除上一个覆盖物图层)
|
|
|
- this.map.clearOverlays();
|
|
|
- // 添加热力覆盖物
|
|
|
- this.map.addOverlay(this.heatmapOverlay);
|
|
|
- this.heatmapOverlay.setDataSet({ data: this.points, max: 100 });
|
|
|
- // 显示热力图,隐藏为this.heatmapOverlay.hide();
|
|
|
- this.heatmapOverlay.show();
|
|
|
+ this.loadinAShow = false; //关闭地图加载动画
|
|
|
+ },
|
|
|
+ //手动定位失败回调
|
|
|
+ getLoctionError() {
|
|
|
+ alert("定位失败");
|
|
|
+ },
|
|
|
+
|
|
|
+ // 关闭信息窗口 @close 自带的方法
|
|
|
+ infoWindowClose(marker) {
|
|
|
+ marker.showFlag = false;
|
|
|
+ // this.nameShow = false;
|
|
|
+ console.log("关闭");
|
|
|
+ console.log(marker);
|
|
|
+ },
|
|
|
+
|
|
|
+ infoWindowOpen(marker, i) {
|
|
|
+ // this.nameShow = true;
|
|
|
+ marker.showFlag = true;
|
|
|
+ console.log("开启");
|
|
|
+ console.log(marker);
|
|
|
+ console.log(i);
|
|
|
+ },
|
|
|
+
|
|
|
+ details(id, r) {
|
|
|
+ localStorage.setItem("memoryID", id); //存id
|
|
|
+ localStorage.setItem("memoryDistinction", r); //存ret
|
|
|
+ localStorage.setItem("Point", "2"); //存标识,是从mapShow页面的点聚合效果中进入的详情
|
|
|
+ this.$router.push("/record");
|
|
|
+ },
|
|
|
+
|
|
|
+ //自动定位
|
|
|
+ ceshi(r) {
|
|
|
+ let geocoder = new BMap.Geocoder(); //创建地址解析器的实例
|
|
|
+ geocoder.getLocation(r.point, (rs) => {
|
|
|
+ this.add.site = rs.address;
|
|
|
+ let a = rs.addressComponents.province;
|
|
|
+ let b = rs.addressComponents.city;
|
|
|
+ let c = rs.addressComponents.district;
|
|
|
+ let d = rs.addressComponents.street;
|
|
|
+ let e = rs.addressComponents.streetNumber;
|
|
|
+ localStorage.setItem("dizhi", a + b + c + d + e); //存地址
|
|
|
+ });
|
|
|
+ this.loadinAShow = false; //关闭地图加载动画
|
|
|
+ },
|
|
|
+
|
|
|
+ //触摸移动时触发的事件
|
|
|
+ move() {
|
|
|
+ this.nameShow = false;
|
|
|
+ this.botNav = false;
|
|
|
+ },
|
|
|
+
|
|
|
+ end() {
|
|
|
+ this.botNav = true;
|
|
|
},
|
|
|
},
|
|
|
+ //生命周期 - 创建完成(可以访问当前this实例)
|
|
|
+ created() {
|
|
|
+ this.$axios({
|
|
|
+ method: "get",
|
|
|
+ url: "bigservers/insect_map?page=1",
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.redata = res.data;
|
|
|
+ this.addr();
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ console.log(error);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
mounted() {
|
|
|
- // 创建和初始化地图函数
|
|
|
- this.initMap();
|
|
|
+ this.get_boderHeight();
|
|
|
+ let _this = this;
|
|
|
+ //判断登录账号类型是用户还是游客
|
|
|
+ if (localStorage.getItem("ret") === "tourist") {
|
|
|
+ _this.dengLV = false;
|
|
|
+ _this.isShow = false;
|
|
|
+ } else if (localStorage.getItem("ret") === "user") {
|
|
|
+ _this.dengLV = true;
|
|
|
+ _this.ret = true;
|
|
|
+ }
|
|
|
+ _this
|
|
|
+ .$axios({
|
|
|
+ method: "get",
|
|
|
+ url: "bigservers/see_user",
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ _this.redata = res.data[0];
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ this.$message({
|
|
|
+ message: "获取用户信息失败",
|
|
|
+ type: "error",
|
|
|
+ duration: 1000,
|
|
|
+ });
|
|
|
+ });
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
-
|
|
|
-<style lang="less">
|
|
|
-#load {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
-}
|
|
|
-#container {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- border: #ccc solid 1px;
|
|
|
-}
|
|
|
-</style>
|
|
|
+<style lang="scss">
|
|
|
+@import "../../assets/scss/bus.scss";
|
|
|
+@import "../../assets/scss/mapShow.scss";
|
|
|
+</style>
|