From 76dd488c026c17c0aa3dda4c401a4b7893d02214 Mon Sep 17 00:00:00 2001
From: sbjw <sbjw.happy@163.com>
Date: Fri, 17 Oct 2025 08:52:29 +0000
Subject: [PATCH] 更新包同步到1.0.26
---
public/example/ExampleAggregatorPage.md | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 109 insertions(+), 0 deletions(-)
diff --git a/public/example/ExampleAggregatorPage.md b/public/example/ExampleAggregatorPage.md
new file mode 100644
index 0000000..8a16622
--- /dev/null
+++ b/public/example/ExampleAggregatorPage.md
@@ -0,0 +1,109 @@
+
+### ExampleAggregatorPage 代码
+
+```jsx
+import React, {Component} from 'react'
+import './ExampleDrawPage.css'
+import {GIS} from "iclient3d-plot-diy";
+
+export default class ExampleAggregatorPage extends Component {
+
+
+ constructor(props) {
+ super(props);
+ this.state = {
+ htmlString: '<h3>正在加载中...</h3>',
+ };
+ }
+
+ componentDidMount() {
+ fetch('./example/ExampleAggregatorPage.md')
+ .then(response => response.text())
+ .then(mdText => {
+ this.setState({htmlString: window.marked.parse(mdText)});
+ });
+
+ const randomPoints = this.generateRandomPointsInRadius(35.9042, 112.4074, 10, 200);
+
+ let options = [];
+ for (let i = 0; i < randomPoints.length; i++) {
+ options.push({
+ type: "2002",
+ useModify: false,
+ lon: randomPoints[i].lng,
+ lat: randomPoints[i].lat,
+ });
+ }
+ this.mapFunction.mapApiService.showDrawDatas(options);
+ }
+
+ /**
+ * 生成指定中心点周围100公里内的2000个随机点
+ * @param {number} centerLat - 中心点纬度(度)
+ * @param {number} centerLng - 中心点经度(度)
+ * @param {number} radiusKm - 半径(公里)
+ * @param {number} count - 生成点数
+ * @returns {Array<{lat: number, lng: number}>} 随机点数组
+ */
+ generateRandomPointsInRadius(centerLat, centerLng, radiusKm = 100, count = 2000) {
+ const points = [];
+ const earthRadius = 6371; // 地球半径(公里)
+
+ for (let i = 0; i < count; i++) {
+ // 1. 生成随机方向(0-2π)
+ const angle = Math.random() * 2 * Math.PI;
+
+ // 2. 生成随机距离(考虑平方根确保均匀分布)
+ const distance = Math.sqrt(Math.random()) * radiusKm;
+
+ // 3. 将距离转换为弧度
+ const distanceRad = distance / earthRadius;
+
+ // 4. 计算新点坐标(哈弗辛公式)
+ const latRad = centerLat * Math.PI / 180;
+ const lngRad = centerLng * Math.PI / 180;
+
+ const newLat = Math.asin(
+ Math.sin(latRad) * Math.cos(distanceRad) +
+ Math.cos(latRad) * Math.sin(distanceRad) * Math.cos(angle)
+ );
+
+ const newLng = lngRad + Math.atan2(
+ Math.sin(angle) * Math.sin(distanceRad) * Math.cos(latRad),
+ Math.cos(distanceRad) - Math.sin(latRad) * Math.sin(newLat)
+ );
+
+ // 5. 转换为度数并存储
+ points.push({
+ lat: newLat * 180 / Math.PI,
+ lng: newLng * 180 / Math.PI
+ });
+ }
+
+ return points;
+ }
+
+ render() {
+ return (
+ <div className={"example_draw_container"}>
+ <h3>自动聚合</h3>
+ <div className={"map_wrapper"}>
+ <GIS refs={e => {
+ this.mapFunction = e
+ }}
+ useSvgIcon={true}
+ mapRef={this}
+ global={[112, 35, 113, 36]}
+ />
+ </div>
+ <div className={"code_wrapper"}>
+ <div dangerouslySetInnerHTML={{__html: this.state.htmlString}}></div>
+ </div>
+ </div>
+ )
+ }
+}
+
+
+
+```
--
Gitblit v1.9.3