位置情報と地図フィルタリング機能の協調化
This commit is contained in:
parent
4194a83c8e
commit
d07c05e523
7
Apps.js
7
Apps.js
@ -39,7 +39,7 @@ export default function Apps({ stationData }) {
|
|||||||
const { favoriteStation } = useFavoriteStation();
|
const { favoriteStation } = useFavoriteStation();
|
||||||
const { isLandscape, setIsLandscape } = useDeviceOrientationChange();
|
const { isLandscape, setIsLandscape } = useDeviceOrientationChange();
|
||||||
const handleLayout = () => {};
|
const handleLayout = () => {};
|
||||||
const { setSelectedLine } = useTrainMenu();
|
const { setSelectedLine, setInjectJavaScript } = useTrainMenu();
|
||||||
|
|
||||||
//画面表示関連
|
//画面表示関連
|
||||||
const [iconSetting, setIconSetting] = useState(undefined);
|
const [iconSetting, setIconSetting] = useState(undefined);
|
||||||
@ -332,7 +332,10 @@ export default function Apps({ stationData }) {
|
|||||||
)}
|
)}
|
||||||
{isLandscape || (
|
{isLandscape || (
|
||||||
<MapsButton
|
<MapsButton
|
||||||
onPress={() => navigate("trainMenu", { webview })}
|
onPress={() => {
|
||||||
|
setInjectJavaScript("");
|
||||||
|
navigate("trainMenu", { webview });
|
||||||
|
}}
|
||||||
top={Platform.OS == "ios" ? Constants.statusBarHeight : 0}
|
top={Platform.OS == "ios" ? Constants.statusBarHeight : 0}
|
||||||
mapSwitch={mapSwitch == "true" ? "flex" : "none"}
|
mapSwitch={mapSwitch == "true" ? "flex" : "none"}
|
||||||
/>
|
/>
|
||||||
|
18
Top.js
18
Top.js
@ -17,12 +17,17 @@ import { AS } from "./storageControl.js";
|
|||||||
import { useTrainMenu } from "./stateBox/useTrainMenu";
|
import { useTrainMenu } from "./stateBox/useTrainMenu";
|
||||||
const Stack = createStackNavigator();
|
const Stack = createStackNavigator();
|
||||||
export const Top = ({ navigationRef }) => {
|
export const Top = ({ navigationRef }) => {
|
||||||
const { webview, getCurrentTrain } = useCurrentTrain();
|
const { webview } = useCurrentTrain();
|
||||||
const navigation = useNavigation();
|
const navigation = useNavigation();
|
||||||
const { navigate, addListener } = navigation;
|
const { navigate, addListener } = navigation;
|
||||||
|
|
||||||
//地図用
|
//地図用
|
||||||
const { mapsStationData, setMapsStationData } = useTrainMenu();
|
const {
|
||||||
|
mapsStationData,
|
||||||
|
setMapsStationData,
|
||||||
|
injectJavaScript,
|
||||||
|
setInjectJavaScript,
|
||||||
|
} = useTrainMenu();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getStationList2().then(setMapsStationData);
|
getStationList2().then(setMapsStationData);
|
||||||
@ -48,15 +53,20 @@ export const Top = ({ navigationRef }) => {
|
|||||||
if (navigationRef.current?.getCurrentRoute().name == "Apps") {
|
if (navigationRef.current?.getCurrentRoute().name == "Apps") {
|
||||||
if (mapSwitch == "true") {
|
if (mapSwitch == "true") {
|
||||||
navigation.navigate("trainMenu");
|
navigation.navigate("trainMenu");
|
||||||
|
setInjectJavaScript("");
|
||||||
} else {
|
} else {
|
||||||
webview.current?.injectJavaScript(`AccordionClassEvent()`);
|
webview.current?.injectJavaScript(`AccordionClassEvent()`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (mapSwitch == "true") {
|
||||||
|
if (injectJavaScript)
|
||||||
|
webview.current?.injectJavaScript(injectJavaScript);
|
||||||
|
}
|
||||||
navigation.navigate("Apps");
|
navigation.navigate("Apps");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return unsubscribe;
|
return unsubscribe;
|
||||||
}, [navigation, mapSwitch]);
|
}, [navigation, mapSwitch, injectJavaScript]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack.Navigator>
|
<Stack.Navigator>
|
||||||
@ -85,7 +95,7 @@ export const Top = ({ navigationRef }) => {
|
|||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
name="trainMenu"
|
name="trainMenu"
|
||||||
options={optionData}
|
options={optionData}
|
||||||
children={() => <TrainMenu stationData={mapsStationData} />}
|
children={() => <TrainMenu />}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Stack.Screen
|
<Stack.Screen
|
||||||
|
@ -10,15 +10,21 @@ import { stationIDPair } from "../lib/getStationList2";
|
|||||||
import { lineListPair } from "../lib/getStationList";
|
import { lineListPair } from "../lib/getStationList";
|
||||||
import { SheetManager } from "react-native-actions-sheet";
|
import { SheetManager } from "react-native-actions-sheet";
|
||||||
import { useTrainMenu } from "../stateBox/useTrainMenu";
|
import { useTrainMenu } from "../stateBox/useTrainMenu";
|
||||||
export default function TrainMenu({ stationData, style }) {
|
export default function TrainMenu({ style }) {
|
||||||
const { webview } = useCurrentTrain();
|
const { webview } = useCurrentTrain();
|
||||||
const mapRef = useRef();
|
const mapRef = useRef();
|
||||||
const { navigate } = useNavigation();
|
const { navigate } = useNavigation();
|
||||||
const [stationPin, setStationPin] = useState([]);
|
const [stationPin, setStationPin] = useState([]);
|
||||||
const { selectedLine, setSelectedLine } = useTrainMenu();
|
const {
|
||||||
|
selectedLine,
|
||||||
|
setSelectedLine,
|
||||||
|
injectJavaScript,
|
||||||
|
setInjectJavaScript,
|
||||||
|
mapsStationData: stationData,
|
||||||
|
} = useTrainMenu();
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const stationPinData = [];
|
const stationPinData = [];
|
||||||
Object.keys(stationData).map((d, indexBase) =>
|
Object.keys(stationData).map((d, indexBase) => {
|
||||||
stationData[d].map((D, index) => {
|
stationData[d].map((D, index) => {
|
||||||
if (!D.StationMap) return null;
|
if (!D.StationMap) return null;
|
||||||
if (selectedLine && selectedLine != d) return;
|
if (selectedLine && selectedLine != d) return;
|
||||||
@ -27,9 +33,14 @@ export default function TrainMenu({ stationData, style }) {
|
|||||||
""
|
""
|
||||||
).split(",");
|
).split(",");
|
||||||
if (latlng.length == 0) return null;
|
if (latlng.length == 0) return null;
|
||||||
|
if (index == 0 && stationPin.length > 0) {
|
||||||
|
setInjectJavaScript(
|
||||||
|
`MoveDisplayStation('${d}_${D.MyStation}_${D.Station_JP}');`
|
||||||
|
);
|
||||||
|
}
|
||||||
stationPinData.push({ D, d, latlng, indexBase: 0, index });
|
stationPinData.push({ D, d, latlng, indexBase: 0, index });
|
||||||
})
|
});
|
||||||
);
|
});
|
||||||
setStationPin(stationPinData);
|
setStationPin(stationPinData);
|
||||||
}, [stationData, selectedLine]);
|
}, [stationData, selectedLine]);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -185,7 +196,14 @@ export default function TrainMenu({ stationData, style }) {
|
|||||||
</UsefulBox>
|
</UsefulBox>
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
<MapsButton onPress={() => navigate("Apps")} top={0} mapSwitch={"flex"} />
|
<MapsButton
|
||||||
|
onPress={() => {
|
||||||
|
navigate("Apps");
|
||||||
|
webview.current?.injectJavaScript(injectJavaScript);
|
||||||
|
}}
|
||||||
|
top={0}
|
||||||
|
mapSwitch={"flex"}
|
||||||
|
/>
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,8 @@ const initialState = {
|
|||||||
setSelectedLine: () => {},
|
setSelectedLine: () => {},
|
||||||
mapsStationData: undefined,
|
mapsStationData: undefined,
|
||||||
setMapsStationData: () => {},
|
setMapsStationData: () => {},
|
||||||
|
injectJavaScript: "",
|
||||||
|
setInjectJavaScript: () => {},
|
||||||
};
|
};
|
||||||
|
|
||||||
const TrainMenuContext = createContext(initialState);
|
const TrainMenuContext = createContext(initialState);
|
||||||
@ -15,6 +17,7 @@ export const useTrainMenu = () => {
|
|||||||
export const TrainMenuProvider = ({ children }) => {
|
export const TrainMenuProvider = ({ children }) => {
|
||||||
const [selectedLine, setSelectedLine] = useState(undefined);
|
const [selectedLine, setSelectedLine] = useState(undefined);
|
||||||
const [mapsStationData, setMapsStationData] = useState(undefined);
|
const [mapsStationData, setMapsStationData] = useState(undefined);
|
||||||
|
const [injectJavaScript, setInjectJavaScript] = useState();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TrainMenuContext.Provider
|
<TrainMenuContext.Provider
|
||||||
@ -23,6 +26,8 @@ export const TrainMenuProvider = ({ children }) => {
|
|||||||
setSelectedLine,
|
setSelectedLine,
|
||||||
mapsStationData,
|
mapsStationData,
|
||||||
setMapsStationData,
|
setMapsStationData,
|
||||||
|
injectJavaScript,
|
||||||
|
setInjectJavaScript,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
Loading…
Reference in New Issue
Block a user