Exemple #1
0
    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();
 }