Sfoglia il codice sorgente

fix[pc-components]: 修复地图点击查询按钮超出区域范围未报错

chenlei 1 anno fa
parent
commit
b1bc9f39de

+ 13 - 6
packages/pc-components/src/components/DageMap/index.tsx

@@ -32,6 +32,7 @@ export const DageMap = forwardRef<DageMapMethods, DageMapProps>(
       onAddressChange,
       onLngLatChange,
       onMapComplete,
+      onError,
     },
     ref
   ) => {
@@ -180,12 +181,7 @@ export const DageMap = forwardRef<DageMapMethods, DageMapProps>(
         )
       ) {
         // 超出市区范围
-        outCityAreaMessage && message.error(outCityAreaMessage, 2);
-        setTimeout(() => {
-          setLat(prevPosition.current[1]);
-          setLng(prevPosition.current[0]);
-          handlePosition(prevPosition.current[0], prevPosition.current[1]);
-        }, 2000);
+        handleOutCityAreaError();
         return;
       }
 
@@ -193,6 +189,16 @@ export const DageMap = forwardRef<DageMapMethods, DageMapProps>(
       prevPosition.current = [lng, lat];
     };
 
+    const handleOutCityAreaError = () => {
+      outCityAreaMessage && message.error(outCityAreaMessage, 2);
+      onError?.();
+      setTimeout(() => {
+        setLat(prevPosition.current[1]);
+        setLng(prevPosition.current[0]);
+        handlePosition(prevPosition.current[0], prevPosition.current[1]);
+      }, 2000);
+    };
+
     return (
       <>
         <div>
@@ -255,6 +261,7 @@ export const DageMap = forwardRef<DageMapMethods, DageMapProps>(
                     city={city}
                     position={position}
                     onChange={handleGeocoderAddress}
+                    onError={handleOutCityAreaError}
                   />
                 )}
               </>

+ 4 - 1
packages/pc-components/src/components/DageMap/plugins/Geocoder/index.ts

@@ -6,10 +6,11 @@ export interface DageMapGeocoderProps {
   position: number[];
   city?: number | string;
   onChange?: (res: AMapGeocoderGetAddressResult) => void;
+  onError?: () => void;
 }
 
 export const DageMapGeocoder: FC<DageMapGeocoderProps> = memo(
-  ({ city, position, onChange }) => {
+  ({ city, position, onError, onChange }) => {
     const map = useAmap();
     const AMap = usePlugins(["AMap.Geocoder"]);
     const geocoder = useRef<any>();
@@ -34,6 +35,8 @@ export const DageMapGeocoder: FC<DageMapGeocoderProps> = memo(
           (status: string, result: AMapGeocoderGetAddressResult) => {
             if (status === "complete" && result.info === "OK") {
               onChange?.(result);
+            } else {
+              onError?.();
             }
           }
         );

+ 4 - 0
packages/pc-components/src/components/DageMap/types.ts

@@ -42,6 +42,10 @@ export interface DageMapProps {
    * 地图加载完成回调
    */
   onMapComplete?(): void;
+  /**
+   * 选择坐标超出市区范围或者解析不出地址回调
+   */
+  onError?(): void;
 }
 
 export type DageMapLngLatChangeEvent = { lng: number; lat: number };