| | |
| | | import { useEffect, useRef, useState } from 'react'; |
| | | import Taro from '@tarojs/taro'; |
| | | import { fetchMapData, getAutoScaleBySites } from '../../../../utils/Robotaxi-public-method'; |
| | | import { readHomeCachedUserLocation } from './use-user-location-cache'; |
| | | |
| | | const AUTO_SCALE_MAX = 17; // 自动缩放最大等级 |
| | | const AUTO_SCALE_MIN = 11; // 自动缩放最小等级 |
| | |
| | | * 地图状态管理:拥有地图坐标、围栏、标记点及地图业务数据刷新能力。 |
| | | */ |
| | | export default function useMapState() { |
| | | const [longitude, setLongitude] = useState<number | null>(null); |
| | | const [latitude, setLatitude] = useState<number | null>(null); |
| | | const [longitude, setLongitude] = useState<number | null>(() => { |
| | | const startSite = Taro.getStorageSync('startSite'); |
| | | if (startSite && Number.isFinite(Number(startSite.longitude))) { |
| | | return Number(startSite.longitude); |
| | | } |
| | | const cachedUserLoc = readHomeCachedUserLocation(); |
| | | if (cachedUserLoc && Number.isFinite(cachedUserLoc.lng)) { |
| | | return cachedUserLoc.lng; |
| | | } |
| | | return null; |
| | | }); |
| | | const [latitude, setLatitude] = useState<number | null>(() => { |
| | | const startSite = Taro.getStorageSync('startSite'); |
| | | if (startSite && Number.isFinite(Number(startSite.latitude))) { |
| | | return Number(startSite.latitude); |
| | | } |
| | | const cachedUserLoc = readHomeCachedUserLocation(); |
| | | if (cachedUserLoc && Number.isFinite(cachedUserLoc.lat)) { |
| | | return cachedUserLoc.lat; |
| | | } |
| | | return null; |
| | | }); |
| | | const [markers, setMarkers] = useState<any[]>([]); |
| | | const [polygons, setPolygons] = useState<any[]>([]); |
| | | const [mapScale, setMapScale] = useState(14); |