From 218f9d509393bdd4de37ec4f1137a6dd0b7f1aa7 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Sat, 5 Jul 2025 08:48:16 +0000 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E9=A7=85=E5=9C=B0=E5=9B=B3=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/TrainMenu/MapPin.tsx | 11 ++++++----- components/trainMenu.js | 18 ++++++++---------- lib/getStationList.ts | 5 +++++ stateBox/useStationList.tsx | 2 +- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/components/TrainMenu/MapPin.tsx b/components/TrainMenu/MapPin.tsx index f679e6b..5d4eef2 100644 --- a/components/TrainMenu/MapPin.tsx +++ b/components/TrainMenu/MapPin.tsx @@ -1,6 +1,7 @@ import React, { FC } from "react"; import { Marker } from "react-native-maps"; import { useNavigation } from "@react-navigation/native"; +import { useStationList } from "@/stateBox/useStationList"; type Props = { index: number; indexBase: number; @@ -13,7 +14,8 @@ type Props = { export const MapPin: FC = (props) => { const { index, indexBase, latlng, D, d, navigate, webview } = props; - const {goBack} = useNavigation(); + const { goBack } = useNavigation(); + const { getInjectJavascriptAddress } = useStationList(); return ( = (props) => { longitude: parseFloat(latlng[1]), }} onPress={() => { - webview.current?.injectJavaScript( - `MoveDisplayStation('${d}_${D.MyStation}_${D.Station_JP}'); - document.getElementById("disp").insertAdjacentHTML("afterbegin", "
");` - ); + const address = getInjectJavascriptAddress(D.StationNumber); + if (!address) return; + webview.current?.injectJavaScript(address); if (navigate) goBack(); }} image={require("../../assets/reccha-small.png")} diff --git a/components/trainMenu.js b/components/trainMenu.js index ad3ad94..746084f 100644 --- a/components/trainMenu.js +++ b/components/trainMenu.js @@ -4,12 +4,13 @@ import MapView from "react-native-maps"; import { useCurrentTrain } from "../stateBox/useCurrentTrain"; import { useNavigation } from "@react-navigation/native"; import lineColorList from "../assets/originData/lineColorList"; -import { lineListPair, stationIDPair } from "../lib/getStationList"; +import { lineList_LineWebID, lineListPair, stationIDPair } from "../lib/getStationList"; import { SheetManager } from "react-native-actions-sheet"; import { useTrainMenu } from "../stateBox/useTrainMenu"; import { MapPin } from "./TrainMenu/MapPin"; import { UsefulBox } from "./TrainMenu/UsefulBox"; import { MapsButton } from "./TrainMenu/MapsButton"; +import { useStationList } from "@/stateBox/useStationList"; export default function TrainMenu({ style }) { const { webview } = useCurrentTrain(); const mapRef = useRef(); @@ -20,22 +21,19 @@ export default function TrainMenu({ style }) { setSelectedLine, mapsStationData: stationData, } = useTrainMenu(); + const { originalStationList } = useStationList(); useEffect(() => { const stationPinData = []; - Object.keys(stationData).forEach((d, indexBase) => { - stationData[d].forEach((D, index) => { - if (!D.StationMap) return null; - if (selectedLine && selectedLine != d) return; - const latlng = D.StationMap.replace( - "https://www.google.co.jp/maps/place/", - "" - ).split(","); + Object.keys(originalStationList).forEach((d, indexBase) => { + originalStationList[d].forEach((D, index) => { + if (selectedLine && selectedLine != lineList_LineWebID[d]) return; + const latlng = [D.lat,D.lng]; if (latlng.length == 0) return null; stationPinData.push({ D, d, latlng, indexBase: 0, index }); }); }); setStationPin(stationPinData); - }, [stationData, selectedLine]); + }, [originalStationList, selectedLine]); useLayoutEffect(() => { mapRef.current.fitToCoordinates( stationPin.map(({ latlng }) => ({ diff --git a/lib/getStationList.ts b/lib/getStationList.ts index 796e893..02608df 100644 --- a/lib/getStationList.ts +++ b/lib/getStationList.ts @@ -178,6 +178,11 @@ export const getStationList = async () => { 予讃線, stationList["日英対応表"] ); + stationList["予讃線(松山-宇和島間)[U]"] = addStationPosition( + concatBetweenStations(stationList["予讃線(松山-宇和島間)[U]"]), + 内子線, + stationList["日英対応表"] + ); stationList["予讃線/愛ある伊予灘線(向井原-伊予大洲間)[S]"] = addStationPosition( concatBetweenStations( diff --git a/stateBox/useStationList.tsx b/stateBox/useStationList.tsx index aae75b8..4a0d10a 100644 --- a/stateBox/useStationList.tsx +++ b/stateBox/useStationList.tsx @@ -104,7 +104,7 @@ export const StationListProvider: FC = ({ children }) => { }); } }); - return `MoveDisplayStation('${bootStationList[0].line}_${bootStationList[0].station.MyStation}_${bootStationList[0].station.Station_JP}')`; + return `MoveDisplayStation('${bootStationList[0].line}_${bootStationList[0].station.MyStation}_${bootStationList[0].station.Station_JP}');document.getElementById("disp").insertAdjacentHTML("afterbegin", "
");`; }; return (