import {useEffect, useState} from "react"; import {Map} from '@tarojs/components' import {Search} from '@nutui/icons-react-taro' import {Button, Input} from '@nutui/nutui-react-taro' import {useRouter} from '@tarojs/taro' import {getHjmCar, getHjmCarByCode} from "@/api/hjm/hjmCar"; import {HjmCar} from "@/api/hjm/hjmCar/model"; import './location.scss' /** * 文章终极列表 * @constructor */ const Location = () => { const {params} = useRouter(); const [keywords, setKeywords] = useState() const [item, setItem] = useState() const [longitude, setLongitude] = useState() const [latitude, setLatitude] = useState() const [scale, setScale] = useState(16) const [showCircles, setShowCircles] = useState(false) const [points, setPoints] = useState([]) const onKeywords = (keywords: string) => { setKeywords(keywords) } // 通用的坐标字符串转数组函数 const parseCoordinateString = (coordStr: string) => { if (!coordStr) return { points: [] }; try { // 分割坐标点 const coordPairs = coordStr.split(';'); // 转为多边形点数组 const points = coordPairs.map(coord => { const [lat, lng] = coord.split(','); return { latitude: parseFloat(lat), longitude: parseFloat(lng) } }); return { points }; } catch (error) { console.error('解析坐标字符串失败:', error); return { points: [] }; } } const reload = () => { const id = Number(params.id); setScale(14) // 执行搜索 if (keywords) { getHjmCarByCode(keywords).then(data => { console.log('执行搜索', data) setItem(data) setLatitude(data.latitude) setLongitude(data.longitude) setKeywords(data.code) if (data.fence) { // 方法2:使用实际的 fence 数据(如果是字符串格式) const coordStr = data.fence.points || ''; // 使用通用函数解析坐标字符串 const { points } = parseCoordinateString(coordStr); console.log('解析结果 - 多边形点:', points); setPoints(points); setShowCircles(true) } }) return false; } // 获取车辆信息 if (id) { getHjmCar(id).then(data => { setItem(data) setLatitude(data.latitude) setLongitude(data.longitude) setKeywords(data.code) if (data.fence) { // 方法2:使用实际的 fence 数据(如果是字符串格式) const coordStr = data.fence.points || ''; // 使用通用函数解析坐标字符串 const { points } = parseCoordinateString(coordStr); console.log('解析结果 - 多边形点:', points); setPoints(points); setShowCircles(true) } }) } } useEffect(() => { reload() }, []) // 监听圈圈数据变化 useEffect(() => { }, [showCircles]) return ( <>
{item ? (
最后更新时间:{item?.updateTime}
操作员:{item?.driver}
{/*
*/} {/* 位置信息:{item?.address}*/} {/*
*/}
) : ''} 0 ? [ { points: points, color: '#ff0000', strokeWidth: 3 } ] : []} onTap={() => { console.log('map tap') }} style={{width: '100%', height: '100vh'}} /> ) } export default Location