import React, { useRef, useState, useEffect, useLayoutEffect } from "react"; import { View, Text, TouchableOpacity, Linking } from "react-native"; //import MapView from "react-native-maps"; import { useCurrentTrain } from "../stateBox/useCurrentTrain"; import { useNavigation } from "@react-navigation/native"; import lineColorList from "../assets/originData/lineColorList"; import { stationIDPair } from "../lib/getStationList2"; import { lineListPair } 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"; export default function TrainMenu({ style }) { return null; const { webview } = useCurrentTrain(); const mapRef = useRef(); const { navigate, goBack } = useNavigation(); const [stationPin, setStationPin] = useState([]); const { selectedLine, setSelectedLine, injectJavaScript, setInjectJavaScript, mapsStationData: stationData, } = useTrainMenu(); 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(","); if (latlng.length == 0) return null; stationPinData.push({ D, d, latlng, indexBase: 0, index }); }); }); setStationPin(stationPinData); }, [stationData, selectedLine]); useLayoutEffect(() => { mapRef.current.fitToCoordinates( stationPin.map(({ latlng }) => ({ latitude: parseFloat(latlng[0]), longitude: parseFloat(latlng[1]), })), { edgePadding: { top: 80, bottom: 120, left: 50, right: 50 } } // Add margin values here ); }, [stationPin]); return ( {stationPin.map(({ D, d, latlng, indexBase, index }) => ( ))} SheetManager.show("TrainMenuLineSelector")} > ▲  ここを押して路線をフィルタリングできます  ▲ {selectedLine ? lineListPair[stationIDPair[selectedLine]] : "JR四国 対象全駅"} 路線記号からフィルタリング {Object.keys(stationData).map((d) => ( { const s = selectedLine == d ? undefined : d; if(!s) return; setSelectedLine(s); Object.keys(stationData).forEach((data, indexBase) => { stationData[data].forEach((D, index) => { if (!D.StationMap) return null; if (s && s != data) return; const latlng = D.StationMap.replace( "https://www.google.co.jp/maps/place/", "" ).split(","); if (latlng.length == 0) return null; if (index == 0 && stationPin.length > 0) { webview.current ?.injectJavaScript(`MoveDisplayStation('${data}_${D.MyStation}_${D.Station_JP}'); document.getElementById("disp").insertAdjacentHTML("afterbegin", "
");`); } }); }); }} > {stationIDPair[d]} ))} {navigate && ( navigate("howto", { info: "https://train.jr-shikoku.co.jp/usage.htm", }) } > 使い方 navigate("favoriteList")} > お気に入り Linking.openURL( "https://nexcloud.haruk.in/apps/forms/ZRHjWFF7znr5Xjr2" ) } > フィードバック )} { goBack(); webview.current?.injectJavaScript(injectJavaScript); }} top={0} mapSwitch={"flex"} /> ); }