| | |
| | | ) { |
| | | return parseWktToPositions(geoDataStr, altitude); |
| | | } |
| | | // 2. 否则按 GeoJSON 格式解析 |
| | | // 2. 新增:判断是否为纯坐标数组字符串(以 [ 开头,以 ] 结尾) |
| | | else if (geoDataStr.startsWith('[') && geoDataStr.endsWith(']')) { |
| | | const coordinates = JSON.parse(geoDataStr); // 直接解析为数组 |
| | | // 验证是否为二维数组([[lng, lat], ...]) |
| | | if (Array.isArray(coordinates) && coordinates.every(item => Array.isArray(item) && item.length >= 2)) { |
| | | return coordinates.map(([lng, lat]) => ({ |
| | | lng: Number(lng), |
| | | lat: Number(lat), |
| | | height: Number(altitude) || 0, |
| | | })); |
| | | } else { |
| | | console.warn('纯数组格式错误,需为 [[lng, lat], ...] 结构'); |
| | | return []; |
| | | } |
| | | } |
| | | // 3. 最后按 GeoJSON 格式解析 |
| | | else { |
| | | const geoData = JSON.parse(geoDataStr); |
| | | let coordinates = []; |
| | |
| | | return []; |
| | | } |
| | | |
| | | // 转换为 {lng, lat, height} 格式 |
| | | return coordinates.map(([lng, lat]) => ({ |
| | | lng: Number(lng), |
| | | lat: Number(lat), |