public SubwayDataDetailModel FindNearestSubwayStation(double lat, double lon) { double min = 987654321, distance; SubwayDataDetailModel nearestStation = null; foreach (SubwayDataDetailModel subwayDataDetailModel in subwayJsonData.DATA) { if (subwayDataDetailModel.xpoint_wgs != null && subwayDataDetailModel.ypoint_wgs != null && subwayDataDetailModel.xpoint_wgs != "" && subwayDataDetailModel.ypoint_wgs != "") { try { //Debug.Log("" + subwayDataDetailModel.xpoint_wgs + ", " + subwayDataDetailModel.ypoint_wgs); double lat2 = double.Parse(subwayDataDetailModel.xpoint_wgs), lon2 = double.Parse(subwayDataDetailModel.ypoint_wgs); distance = GpsDistance(lat, lon, lat2, lon2); if (distance < min) { Debug.Log("change min: " + subwayDataDetailModel.station_nm + " dist: " + distance + " min: " + min); min = distance; nearestStation = subwayDataDetailModel; } } catch (UnityException except) { Debug.Log("cannot parse data: " + except.Message); } } } if (nearestStation != null) { Debug.Log("nearest station: " + nearestStation.station_nm + " dist: " + min.ToString()); } return(nearestStation); }
void SetNearestSubwayLocation(SubwayDataDetailModel subwayDataDetailModel) { if (txtMyLocation != null) { if (subwayDataDetailModel != null) { txtMyLocation.text = "내 위치 " + subwayDataDetailModel.station_nm + "역"; } else { txtMyLocation.text = "가장 가까운 역을 검색하는 중입니다..."; } } }
// Update is called once per frame void Update() { systemMilSec = systemMilSec + Time.deltaTime; if (UPDATE_TIME_GAP < systemMilSec) { systemMilSec = 0; gpsLastLoc = gpsManager.GetLastLocationData(); AppendLogger("lat: " + gpsLastLoc[0] + " long: " + gpsLastLoc[1] + " state: " + gpsLastLoc[2]); SubwayDataDetailModel subwayDataDetailModel = subwayManager.FindNearestSubwayStation(gpsLastLoc[0], gpsLastLoc[1]); if (subwayDataDetailModel == null) { AppendLogger("cannot find nearest station"); SetNearestSubwayLocation(null); } else { AppendLogger("station name: " + subwayDataDetailModel.station_nm); Debug.Log("nearest station: " + subwayDataDetailModel.station_nm); SaveNearestStation(subwayDataDetailModel); SetNearestSubwayLocation(subwayDataDetailModel); } } }
void SaveNearestStation(SubwayDataDetailModel subwayDataDetailModel) { PlayerPrefs.SetString("stationName", subwayDataDetailModel.station_nm); PlayerPrefs.SetString("stationCode", subwayDataDetailModel.fr_code); PlayerPrefs.Save(); }