### 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: '
正在加载中...
',
};
}
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 (
自动聚合
{
this.mapFunction = e
}}
useSvgIcon={true}
mapRef={this}
global={[112, 35, 113, 36]}
/>
)
}
}
```