hejianhao
2026-06-17 6be24b7ec0350012741a4da8090f1bfafa6d058f
Merge branch 'feature_v1.0' into feature_v2.0
3个文件已修改
40 ■■■■■ 已修改文件
src/pages/robotaxi/home/components/home-map-panel.tsx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/hooks/use-map-state.ts 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/index.less 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/components/home-map-panel.tsx
@@ -110,6 +110,9 @@
      onMarkerTap={props.onMarkerTap}
      style={{ width: '100%', height: HOME_MAP_HEIGHT, flex: 'none' }}
    >
      {props.longitude === null && props.latitude === null && (
        <View className="map-placeholder-grid" />
      )}
      <View className="select-city-container">
        <View onClick={() => Taro.switchTab({ url: '/pages/home/index' })} className="home-back-btn">
          <Image className="home-back-icon" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/back-icon.png" />
src/pages/robotaxi/home/hooks/use-map-state.ts
@@ -1,6 +1,7 @@
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; // 自动缩放最小等级
@@ -30,8 +31,28 @@
 * 地图状态管理:拥有地图坐标、围栏、标记点及地图业务数据刷新能力。
 */
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);
src/pages/robotaxi/home/index.less
@@ -1,3 +1,15 @@
.map-placeholder-grid {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  background-color: #F2F3F7;
  background-image: linear-gradient(#E5E7EB 2px, transparent 2px), linear-gradient(90deg, #E5E7EB 2px, transparent 2px);
  background-size: 40px 40px;
}
.select-city-container {
  position: absolute;
  top: 104px;