高德地图 绘制 柱状图形
生活随笔
收集整理的這篇文章主要介紹了
高德地图 绘制 柱状图形
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要注意清空柱狀圖形
<template><div class="contentBox"><div id="map"></div></div> </template> <script> import AMap from 'AMap'export default {data() {return {object3Dlayer: null,//柱狀圖}},methods: {setHomeMap(mapData, code) {//柱狀圖顏色設置const prismData = {height: 500,radius: 100,topColor: [1, 0.8, 0.4, 0.8],topFaceColor: [1, 0.8, 0.5, 0.8],//頂部bottomColor: [1, 0.72, 0, 0.8]};this.object3Dlayer = new AMap.Object3DLayer();this.map.add(this.object3Dlayer);this.offset = new AMap.Pixel(0, 0);//柱狀圖let center_3d = this.map.lngLatToGeodeticCoord('中心點坐標');this._createCylinder(center_3d, prismData, this.object3Dlayer);}, initMap() {if (!this.map) {this.map = new AMap.Map('map', {viewMode: '3D',pitch: 50,resizeEnable: true, zoom: 15.85, center: [121.536233, 31.172555], });this.map.setMapStyle("amap://styles/blue")}},_createCylinder(center, prismData, object3Dlayer) {//圓柱設置let segment = 32;//棱柱的形狀,圓let topColor = prismData.topColor;let topFaceColor = prismData.topFaceColor;let bottomColor = prismData.bottomColor;// let height = prismData.height;let setRadius = prismData.radius;this.cylinder = new AMap.Object3D.Mesh();let geometry = this.cylinder.geometry;let verticesLength = segment * 2;let path = [];for (let i = 0; i < segment; i += 1) {let angle = 2 * Math.PI * i / segment;let x = center.x + Math.cos(angle) * setRadius;let y = center.y + Math.sin(angle) * setRadius;path.push([x, y]);geometry.vertices.push(x, y, 0); //底部頂點geometry.vertices.push(x, y, -prismData.height); //頂部頂點geometry.vertexColors.push.apply(geometry.vertexColors, bottomColor); //底部顏色geometry.vertexColors.push.apply(geometry.vertexColors, topColor); //頂部顏色let bottomIndex = i * 2;let topIndex = bottomIndex + 1;let nextBottomIndex = (bottomIndex + 2) % verticesLength;let nextTopIndex = (bottomIndex + 3) % verticesLength;geometry.faces.push(bottomIndex, topIndex, nextTopIndex); //側面三角形1geometry.faces.push(bottomIndex, nextTopIndex, nextBottomIndex); //側面三角形2}// 構建頂面三角形,為了區分頂面點和側面點使用不一樣的顏色,所以需要獨立的頂點for (let i = 0; i < segment; i += 1) {geometry.vertices.push.apply(geometry.vertices, geometry.vertices.slice(i * 6 + 3, i * 6 + 6)); //底部頂點geometry.vertexColors.push.apply(geometry.vertexColors, topFaceColor);}let triangles = AMap.GeometryUtil.triangulateShape(path);let offset = segment * 2;for (let v = 0; v < triangles.length; v += 3) {geometry.faces.push(triangles[v] + offset, triangles[v + 2] + offset, triangles[v + 1] + offset);}this.cylinder.transparent = true; // 如果使用了透明顏色,請設置trueobject3Dlayer.add(this.cylinder);},},},mounted() {this.initMap();} } </script>?
總結
以上是生活随笔為你收集整理的高德地图 绘制 柱状图形的全部內容,希望文章能夠幫你解決所遇到的問題。