如何使用react-simple-map给美国地图添加单起点多终点坐标
解决react-simple-map中起点到多终点的线路渲染问题
核心问题在于你当前用单个<Line>组件传入所有坐标点,它会把这些点连成一条连续的折线,而非从起点到每个终点的独立线路。react-simple-map的<Line>组件确实没有to/from属性,仅通过coordinates定义单条线的路径。
正确实现方式
- 单独提取起点坐标,将所有终点整理为数组:
const startPoint = [-114.09056, 46.91631]; const endPoints = [ [-93.21692, 44.88055], [-90.25803, 29.99339], [-107.89383, 38.50887], [-70.61433, 41.39303] ];
- 遍历终点数组,为每个终点生成独立的
<Line>组件,每个组件的coordinates传入[起点, 对应终点]的数组。
修改后的完整代码:
const MapChart = () => { const startPoint = [-114.09056, 46.91631]; const endPoints = [ [-93.21692, 44.88055], [-90.25803, 29.99339], [-107.89383, 38.50887], [-70.61433, 41.39303] ]; return ( <ComposableMap projection="geoAlbersUsa"> <Graticule stroke="#DDD" strokeWidth={0.5} /> <Sphere stroke="#DDD" strokeWidth={0.5} /> <Geographies geography={geoUrl}> {({ geographies }) => geographies.map((geo) => ( <Geography key={geo.rsmKey} geography={geo} fill="#DDD" stroke="#FFF" /> )) } </Geographies> {/* 遍历终点生成多条独立线路 */} {endPoints.map((endPoint, index) => ( <Line key={index} coordinates={[startPoint, endPoint]} stroke="#F53" strokeWidth={2} /> ))} </ComposableMap> ); };
补充说明
- 每个
<Line>只负责绘制一条单独线段,因此需要为每一组起点-终点创建一个组件实例 - 必须为每个
<Line>添加唯一key(示例用数组索引,实际项目建议用终点的唯一标识) - 无需额外
to/from属性,coordinates数组的两个元素即对应线段的起点和终点
内容的提问来源于stack exchange,提问作者user1234
相关产品推荐
相关产品推荐

