1. 程式人生 > 其它 >百度地圖行政區域描點

百度地圖行政區域描點

<template>
  <div class="mapContainer">
    <!-- <div id="tMap" /> -->
    <div id="tMap" ref="tMap" />
  </div>
</template>

<script>
import { TDIMap, BaiduMap } from "@/utils/map.js";
import marki1 from "@/assets/map/i-1.png";
import marki2 from "@/assets/map/i-2.png
"; import marki3 from "@/assets/map/i-3.png"; import marki4 from "@/assets/map/i-4.png"; import marki5 from "@/assets/map/i-5.png"; import marki6 from "@/assets/map/i-6.png"; import marki7 from "@/assets/map/i-7.png"; import markBg1 from "@/assets/map/m-t-bg1.png"; import markBg2 from "@/assets/map/m-t-bg2.png"; import markBg3 from
"@/assets/map/m-t-bg3.png"; import markBg4 from "@/assets/map/m-t-bg4.png"; import markBg5 from "@/assets/map/m-t-bg5.png"; import markBg6 from "@/assets/map/m-t-bg6.png"; import markBg7 from "@/assets/map/m-t-bg7.png"; import mapdbg from "@/assets/dzdl/mapdbg.png"; const $tdMap = null; export default { name: "TdMap
", props: { dataList: { type: Array, default: () => { return [ { lat: "118.174014", lng: "30.732226", name: "這裡是景區名稱", }, ]; }, }, }, data() { return { // lat: 30.930916, // lng: 118.344438, //118.17193,30.727538 // lat: 30.927928, // lng: 118.194855, // lat: 30.679277, // lng: 118.140187, // mapLevel: 15, }; }, watch: { dataList: { handler() { // this.initBaiDu(); this.bgMark(); }, deep: true, }, }, mounted() { this.initBaiDu(); }, created() {}, methods: { initBaiDu() { const _this = this; BaiduMap.init().then((BMap) => { _this.map = new BMapGL.Map(_this.$refs.tMap); _this.map.centerAndZoom( new BMapGL.Point(_this.lng, _this.lat), _this.mapLevel ); // _this.map.addControl( // new BMapGL.MapTypeControl({ // // mapTypes: [BMAP_NORMAL_MAP, BMAP_HYBRID_MAP], //圖層型別+混合 // // mapTypes: [BMAP_NORMAL_MAP], //圖層型別 // // anchor: BMAP_ANCHOR_TOP_LEFT, //切換按鈕位置 // }) // ); _this.map.enableScrollWheelZoom(); let zoomCtrl = new BMapGL.ZoomControl(); // 新增縮放控制元件 _this.map.addControl(zoomCtrl); //地圖個性化 _this.map.setMapStyleV2({ styleId: "2ab34170567eb610404d09569833f505", }); //劃區域 _this.getBoundary(); }); }, getBoundary() { const _this = this; let bdary = new BMapGL.Boundary(); bdary.get("安徽省蕪湖市南陵縣", function (rs) { _this.map.clearOverlays(); //清除地圖覆蓋物 let count = rs.boundaries.length; //行政區域的點有多少個 if (count === 0) { alert("未能獲取當前輸入行政區域"); return; } let pointArray = []; for (let i = 0; i < count; i++) { let ply = new BMapGL.Polygon(rs.boundaries[i], { strokeWeight: 3, strokeColor: "#13EBFF", strokeStyle: "dashed", fillColor: "#08304B", fillOpacity: 0.2, isBuildingMask: true, isPoiMask: true, isMapMask: true, }); //建立多邊形覆蓋物 _this.map.addOverlay(ply); //新增覆蓋物 pointArray = pointArray.concat(ply.getPath()); } _this.map.setViewport(pointArray); //調整視野 //地圖示點========================= _this.bgMark(); }); }, //座標點標記 bgMark() { let _this = this; const marArr = _this.dataList; let mark = ""; let markBg = ""; let colorBg = ""; _this.removeMarkets(); for (var i = 0; i < marArr.length; i++) { let type = marArr[i].type; switch (type) { case 1: mark = marki1; markBg = markBg1; colorBg = "#43E185"; break; case 2: mark = marki2; markBg = markBg2; colorBg = "#FF9F2C"; break; case 3: mark = marki3; markBg = markBg3; colorBg = "#44ACFF"; break; case 4: mark = marki4; markBg = markBg4; colorBg = "#BD7AF2"; break; case 5: mark = marki5; markBg = markBg5; colorBg = "#FF91E2"; break; case 6: mark = marki6; markBg = markBg6; colorBg = "#1EE8FB"; break; case 7: mark = marki7; markBg = markBg7; colorBg = "#FF6459"; break; default: mark = marki1; markBg = markBg1; colorBg = "#43E185"; } if (marArr[i].lat && marArr[i].lng) { _this.myIcon = new BMapGL.Icon(mark, new BMapGL.Size(42, 50)); let marker = new BMapGL.Marker( new BMapGL.Point(marArr[i].lat, marArr[i].lng), { icon: _this.myIcon, } ); _this.map.addOverlay(marker); // marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳動的動畫 // 建立資訊視窗 let scont = "<div class='tcont' style='background-image:url(" + markBg + ");color:" + colorBg + "'>" + marArr[i].name + "</div>"; let opts = { width: 150, }; let infoWindow = new BMapGL.InfoWindow(scont, opts); // 點標記新增點選事件 let point = new BMapGL.Point(marArr[i].lat, marArr[i].lng); marker.addEventListener("click", function () { _this.map.openInfoWindow(infoWindow, point); // 開啟資訊視窗 }); } } }, //刪除座標 removeMarkets() { let _this = this; let markers_gis = _this.map.getOverlays(); if (markers_gis.length > 0) { for (let i = 0; i < markers_gis.length; i++) { _this.map.removeOverlay(markers_gis[i]); } } //清楚標點後再新增行政區域 let bdary = new BMapGL.Boundary(); bdary.get("安徽省蕪湖市南陵縣", function (rs) { // _this.map.clearOverlays(); //清除地圖覆蓋物 let count = rs.boundaries.length; //行政區域的點有多少個 if (count === 0) { alert("未能獲取當前輸入行政區域"); return; } let pointArray = []; for (let i = 0; i < count; i++) { let ply = new BMapGL.Polygon(rs.boundaries[i], { strokeWeight: 3, strokeColor: "#13EBFF", strokeStyle: "dashed", fillColor: "#08304B", fillOpacity: 0.2, isBuildingMask: true, isPoiMask: true, isMapMask: true, }); //建立多邊形覆蓋物 _this.map.addOverlay(ply); //新增覆蓋物 pointArray = pointArray.concat(ply.getPath()); } _this.map.setViewport(pointArray); //調整視野 }); }, }, }; </script> <style lang="scss" scoped> .mapContainer { width: 100%; z-index: 4; height: 100%; } #tMap { width: 100%; height: 100%; } </style>