|
|
@@ -400,6 +400,42 @@ const SERIES_CIRCLE_STROKE = [
|
|
|
2.5
|
|
|
] as unknown as number;
|
|
|
|
|
|
+const SERIES_TEXT_SIZE = [
|
|
|
+ 'interpolate',
|
|
|
+ ['linear'],
|
|
|
+ ['zoom'],
|
|
|
+ 3,
|
|
|
+ 6,
|
|
|
+ 4,
|
|
|
+ 7,
|
|
|
+ 5,
|
|
|
+ 8,
|
|
|
+ 6,
|
|
|
+ 9,
|
|
|
+ 7,
|
|
|
+ 10,
|
|
|
+ 8,
|
|
|
+ 10,
|
|
|
+ 9,
|
|
|
+ 11,
|
|
|
+ 10,
|
|
|
+ 11,
|
|
|
+ 11,
|
|
|
+ 12,
|
|
|
+ 12,
|
|
|
+ 12,
|
|
|
+ 13,
|
|
|
+ 13,
|
|
|
+ 14,
|
|
|
+ 13,
|
|
|
+ 15,
|
|
|
+ 14,
|
|
|
+ 16,
|
|
|
+ 14,
|
|
|
+ 17,
|
|
|
+ 15
|
|
|
+] as unknown as number;
|
|
|
+
|
|
|
const MapScreen: any = ({ navigation, route }: { navigation: any; route: any }) => {
|
|
|
const tabBarHeight = useBottomTabBarHeight();
|
|
|
const userId = storage.get('uid', StoreType.STRING) as string;
|
|
|
@@ -428,7 +464,8 @@ const MapScreen: any = ({ navigation, route }: { navigation: any; route: any })
|
|
|
visible: true,
|
|
|
groups: [],
|
|
|
applied: false,
|
|
|
- status: -1
|
|
|
+ status: -1,
|
|
|
+ labelIds: []
|
|
|
});
|
|
|
const [regionsFilter, setRegionsFilter] = useState<any>({
|
|
|
visitedLabel: 'by',
|
|
|
@@ -846,26 +883,38 @@ const MapScreen: any = ({ navigation, route }: { navigation: any; route: any })
|
|
|
);
|
|
|
}, [nomadsFilter, loading]);
|
|
|
|
|
|
- const isMustModeEnabled = useMemo(
|
|
|
- () => seriesFilter.visible && seriesFilter.groups?.includes(-1),
|
|
|
- [seriesFilter]
|
|
|
- );
|
|
|
-
|
|
|
- const isGroupEnabled = useCallback(
|
|
|
- (groupId: number) => {
|
|
|
- if (!seriesFilter.visible) return false;
|
|
|
- if (!seriesFilter.groups?.length) return true;
|
|
|
- return seriesFilter.groups.includes(groupId);
|
|
|
- },
|
|
|
- [seriesFilter]
|
|
|
- );
|
|
|
-
|
|
|
- const seriesGroups = useMemo(() => {
|
|
|
- if (!seriesIcons?.data) return [];
|
|
|
- return seriesIcons.data.map((icon) => ({
|
|
|
- id: icon.id
|
|
|
- }));
|
|
|
- }, [seriesIcons]);
|
|
|
+ // const isMustModeEnabled = useMemo(
|
|
|
+ // () => seriesFilter.visible && seriesFilter.groups?.includes(-1),
|
|
|
+ // [seriesFilter]
|
|
|
+ // );
|
|
|
+
|
|
|
+ // const isGroupEnabled = useCallback(
|
|
|
+ // (groupId: number) => {
|
|
|
+ // if (!seriesFilter.visible) return false;
|
|
|
+ // if (!seriesFilter.groups?.length) return true;
|
|
|
+ // return seriesFilter.groups.includes(groupId);
|
|
|
+ // },
|
|
|
+ // [seriesFilter]
|
|
|
+ // );
|
|
|
+
|
|
|
+ // const seriesGroups = useMemo(() => {
|
|
|
+ // if (!seriesIcons?.data) return [];
|
|
|
+ // return seriesIcons.data.map((icon) => ({
|
|
|
+ // id: icon.id
|
|
|
+ // }));
|
|
|
+ // }, [seriesIcons]);
|
|
|
+
|
|
|
+ const seriesTextField = useMemo(() => {
|
|
|
+ const ids = seriesFilter.labelIds;
|
|
|
+ if (!ids) return ['get', 'name'] as unknown as string;
|
|
|
+ if (ids.length === 0) return '';
|
|
|
+ return [
|
|
|
+ 'case',
|
|
|
+ ['in', ['get', 'series_id'], ['literal', ids]],
|
|
|
+ ['get', 'name'],
|
|
|
+ ''
|
|
|
+ ] as unknown as string;
|
|
|
+ }, [seriesFilter.labelIds]);
|
|
|
|
|
|
useEffect(() => {
|
|
|
if (!seriesFilter.visible) {
|
|
|
@@ -1337,24 +1386,24 @@ const MapScreen: any = ({ navigation, route }: { navigation: any; route: any })
|
|
|
const onMapPress = async (event: any) => {
|
|
|
if (!mapRef.current) return;
|
|
|
|
|
|
- const { screenPointX, screenPointY } = event.properties;
|
|
|
- const seriesLayerIds = seriesGroups.flatMap((g) => [
|
|
|
- `series-${g.id}-unvisited`,
|
|
|
- `series-${g.id}-must-icon`,
|
|
|
- `series-${g.id}-visited-normal`,
|
|
|
- `series-${g.id}-visited-must`
|
|
|
- ]);
|
|
|
-
|
|
|
- const { features: seriesFeatures } = await mapRef.current.queryRenderedFeaturesAtPoint(
|
|
|
- [screenPointX, screenPointY],
|
|
|
- undefined,
|
|
|
- seriesLayerIds
|
|
|
- );
|
|
|
-
|
|
|
- if (seriesFeatures?.length) {
|
|
|
- handleMarkerPress({ features: seriesFeatures });
|
|
|
- return;
|
|
|
- }
|
|
|
+ // const { screenPointX, screenPointY } = event.properties;
|
|
|
+ // const seriesLayerIds = seriesGroups.flatMap((g) => [
|
|
|
+ // `series-${g.id}-unvisited`,
|
|
|
+ // `series-${g.id}-must-icon`,
|
|
|
+ // `series-${g.id}-visited-normal`,
|
|
|
+ // `series-${g.id}-visited-must`
|
|
|
+ // ]);
|
|
|
+
|
|
|
+ // const { features: seriesFeatures } = await mapRef.current.queryRenderedFeaturesAtPoint(
|
|
|
+ // [screenPointX, screenPointY],
|
|
|
+ // undefined,
|
|
|
+ // seriesLayerIds
|
|
|
+ // );
|
|
|
+
|
|
|
+ // if (seriesFeatures?.length) {
|
|
|
+ // handleMarkerPress({ features: seriesFeatures });
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
|
|
|
if (selectedMarker || selectedUser) {
|
|
|
closeCallout();
|
|
|
@@ -2287,12 +2336,12 @@ const MapScreen: any = ({ navigation, route }: { navigation: any; route: any })
|
|
|
iconHaloWidth: 1,
|
|
|
iconHaloBlur: 0.5,
|
|
|
textAnchor: 'top',
|
|
|
- textField: '{name}',
|
|
|
+ textField: seriesTextField,
|
|
|
textFont: ['Noto Sans Regular'],
|
|
|
textMaxWidth: 9,
|
|
|
textOffset: [0, 1.3],
|
|
|
textPadding: 2,
|
|
|
- textSize: 12,
|
|
|
+ textSize: SERIES_TEXT_SIZE,
|
|
|
textOptional: true,
|
|
|
textIgnorePlacement: false,
|
|
|
textAllowOverlap: false,
|
|
|
@@ -2342,12 +2391,12 @@ const MapScreen: any = ({ navigation, route }: { navigation: any; route: any })
|
|
|
iconHaloWidth: 1,
|
|
|
iconHaloBlur: 0.5,
|
|
|
textAnchor: 'top',
|
|
|
- textField: '{name}',
|
|
|
+ textField: seriesTextField,
|
|
|
textFont: ['Noto Sans Regular'],
|
|
|
textMaxWidth: 9,
|
|
|
textOffset: [0, 1.3],
|
|
|
textPadding: 2,
|
|
|
- textSize: 12,
|
|
|
+ textSize: SERIES_TEXT_SIZE,
|
|
|
textOptional: true,
|
|
|
textIgnorePlacement: false,
|
|
|
textAllowOverlap: false,
|
|
|
@@ -2391,12 +2440,12 @@ const MapScreen: any = ({ navigation, route }: { navigation: any; route: any })
|
|
|
iconHaloWidth: 1,
|
|
|
iconHaloBlur: 0.5,
|
|
|
textAnchor: 'top',
|
|
|
- textField: '{name}',
|
|
|
+ textField: seriesTextField,
|
|
|
textFont: ['Noto Sans Regular'],
|
|
|
textMaxWidth: 9,
|
|
|
textOffset: [0, 1.3],
|
|
|
textPadding: 2,
|
|
|
- textSize: 12,
|
|
|
+ textSize: SERIES_TEXT_SIZE,
|
|
|
textOptional: true,
|
|
|
textIgnorePlacement: false,
|
|
|
textAllowOverlap: false,
|
|
|
@@ -2446,12 +2495,12 @@ const MapScreen: any = ({ navigation, route }: { navigation: any; route: any })
|
|
|
iconHaloWidth: 1,
|
|
|
iconHaloBlur: 0.5,
|
|
|
textAnchor: 'top',
|
|
|
- textField: '{name}',
|
|
|
+ textField: seriesTextField,
|
|
|
textFont: ['Noto Sans Regular'],
|
|
|
textMaxWidth: 9,
|
|
|
textOffset: [0, 1.3],
|
|
|
textPadding: 2,
|
|
|
- textSize: 12,
|
|
|
+ textSize: SERIES_TEXT_SIZE,
|
|
|
textOptional: true,
|
|
|
textIgnorePlacement: false,
|
|
|
textAllowOverlap: false,
|