Browse Source

111

feature
dai 3 years ago
parent
commit
9df9c98fa0
  1. 78
      src/views/modules/visual/command/cpts/map.vue
  2. 2
      src/views/modules/visual/command/index.vue

78
src/views/modules/visual/command/cpts/map.vue

@ -48,6 +48,7 @@ let dotLayer2;
let countTextLayer; let countTextLayer;
let countTextBgLayer; let countTextBgLayer;
let searchMarker; let searchMarker;
let searchBgLayer;
export default { export default {
name: "l7", name: "l7",
@ -627,8 +628,82 @@ export default {
} }
}, },
drawSearchBg(lng, lat) {
function getPoints(lng, lat) {
// lng lat dis
let r = 6371; //
let dis = 1.5; //3
let dlng =
2 *
Math.asin(Math.sin(dis / (2 * r)) / Math.cos((lat * Math.PI) / 180));
dlng = (dlng * 180) / Math.PI; //
let dlat = dis / r;
dlat = (dlat * 180) / Math.PI; //
//
for (let sides = 1; sides <= 360; sides++) {
var angle = Math.PI * (1 / sides - 1 / 2);
var rotatedAngle, x, y;
var points = [];
for (var i = 0; i < sides; ++i) {
rotatedAngle = angle + (i * 2 * Math.PI) / sides;
x = lng + dlng * Math.cos(rotatedAngle);
y = lat + dlat * Math.sin(rotatedAngle);
points.push([x, y]);
}
}
console.log("points=======", points);
return points;
}
let sourceData;
if (lng) {
sourceData = {
type: "FeatureCollection",
features: [
{
type: "Feature",
properties: {
center: [lng, lat],
},
geometry: {
type: "Polygon",
coordinates: [getPoints(lng, lat)],
},
},
],
};
} else {
sourceData = {
type: "FeatureCollection",
features: [],
};
}
if (searchBgLayer) {
searchBgLayer.setData(sourceData);
} else {
searchBgLayer = new PolygonLayer({
// autoFit: true,
})
.source(sourceData)
.color("#f0f")
.shape("fill")
.style({
opacityLinear: {
enable: true, // true - false
dir: "out", // in - out
},
opacity: 0.3,
raisingHeight: 0,
});
scene.addLayer(searchBgLayer);
}
},
async setDotMarker(item, posArr) { async setDotMarker(item, posArr) {
this.removeDotMarker(); this.removeDotMarker();
this.drawSearchBg(...posArr);
const marker = new Marker({ const marker = new Marker({
offsets: [0, -20], offsets: [0, -20],
}).setLnglat(posArr); }).setLnglat(posArr);
@ -652,7 +727,7 @@ export default {
}); });
scene.addMarker(marker); scene.addMarker(marker);
scene.setZoomAndCenter(18, posArr); scene.setZoomAndCenter(14, posArr);
marker.openPopup(); marker.openPopup();
searchMarker = marker; searchMarker = marker;
}, },
@ -661,6 +736,7 @@ export default {
if (searchMarker) { if (searchMarker) {
searchMarker.remove(); searchMarker.remove();
} }
this.drawSearchBg();
}, },
// //

2
src/views/modules/visual/command/index.vue

@ -50,7 +50,7 @@
@keyup.enter="handleSearch" @keyup.enter="handleSearch"
v-model="searchName" v-model="searchName"
/> />
<img <img v-show="searchName"
class="i-close" class="i-close"
@click="clearSearch" @click="clearSearch"
src="@/assets/img/shuju/command/close.png" src="@/assets/img/shuju/command/close.png"

Loading…
Cancel
Save