public void HttpAisResultDelegate(bool isError, Dictionary <string, ShipData> datas, string errorMsg)
    {
        if (isError)
        {
            _errorText.text = errorMsg;
            _alertAnimator.SetTrigger("SetAlertAction");
            return;
        }
        _errorText.text = "";

        lock (_lockObj)
        {
            //삭제
            List <string> newRemoveKeys = new List <string>();
            foreach (string userID_a in _shipObjs.Keys)
            {
                foreach (string userID_b in datas.Keys)
                {
                    if (userID_a.Equals(userID_b))
                    {   //있으면 일루 들어와짐. 삭제 예정해주고, 통신시간 틀리면 데이터 정보만 바꿔주는걸로.
                        newRemoveKeys.Add(userID_a);

                        ShipObjectScript shipSC = _shipObjs[userID_a].GetComponent <ShipObjectScript>();
                        if (!shipSC.GetShipData().regDate.Equals(datas[userID_b].regDate))
                        {
                            shipSC.SetChangeMoveCoroutineAction(datas[userID_b]);  //이동 정보 수정해주고.
                        }
                        break;
                    }
                }
            }
            foreach (string str in newRemoveKeys)
            {
                datas.Remove(str);
            }

            //추가
            foreach (string userID in datas.Keys)
            {
                AddShipObject(userID, datas[userID]);
            }
        }

        if (_loadingView.activeSelf)
        {
            _loadingView.SetActive(false);
            _data5GView.SetActive(true);
        }
    }
    public void SetShipMap(GameObject obj)
    {
        ShipObjectScript sc = obj.GetComponent <ShipObjectScript>();
        //Vector2 tempPs = new Vector2(obj.transform.position.x, obj.transform.position.z);
        //Vector2 newShipPs = GetObjectPosition(tempPs, obj.transform.rotation.y, sc._distance);
        //Vector2 newPs = MapPosition(newShipPs.x, newShipPs.y);
        Vector2 newPs = MapPosition(obj.transform.position.x, obj.transform.position.z);

        GameObject copyPrefab = Instantiate <GameObject>(_shipPrefab);

        copyPrefab.transform.parent = _map.transform;

        copyPrefab.GetComponent <RectTransform>().localPosition = new Vector2(newPs.x, newPs.y);
        //copyPrefab.transform.SetParent(_map.transform, true);

        _shipMapList.Add(sc._userKey, copyPrefab);
    }
    // Update is called once per frame
    void Update()
    {
        // _errorText.text = "x- " + Camera.main.transform.position.x + ",\n" + "y- " + Camera.main.transform.position.y + ",\n" + "z- " + Camera.main.transform.position.z;

        if (Input.touchCount == 1 && _userState == SystemState.kNone)
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Input.GetTouch(0).phase == TouchPhase.Began)
            {
                if (Physics.Raycast(ray, out hit))
                {
                    ShipObjectScript sc = hit.transform.gameObject.GetComponent <ShipObjectScript>();
                    OpenShipInfoViewAction(sc._userKey, sc.GetShipData(), sc._distance);
                    //sc._shipSc._userKey
                    //sc._shipSc._shipData
                }
            }
        }
    }
    private void AddShipObject(string key, ShipData value)
    {
        if (!value.messageID.Equals("0"))
        {
            return;                                 //**원래라면 여기서 장애물 선별해야함.
        }
        ARLocation.Location newLocation = new ARLocation.Location()
        {
            Latitude     = double.Parse(value.latitude),
            Longitude    = double.Parse(value.longitude),
            Altitude     = 0,
            AltitudeMode = ARLocation.AltitudeMode.GroundRelative
        };

        //new object
        GameObject       copyPrefab = Instantiate <GameObject>(_shipObjPrefab);
        ShipObjectScript objSc      = copyPrefab.GetComponent <ShipObjectScript>();

        objSc._mapVC = _mapVC;

        ARLocation.PlaceAtLocation.PlaceAtOptions opts = new ARLocation.PlaceAtLocation.PlaceAtOptions()
        {
            HideObjectUntilItIsPlaced  = true,
            MaxNumberOfLocationUpdates = 1, //** 업데이트 횟 수 관리
            MovementSmoothing          = 0,
            UseMovingAverage           = true
        };

        objSc._mainSceneController = this;
        objSc._userKey             = key;
        objSc.SetShipData(value);

        objSc._placeAtLocationScript = ARLocation.PlaceAtLocation.AddPlaceAtComponentCustom(objSc._placeAtLocationScript, newLocation, opts);

        objSc._placeAtLocationScript.ObjectLocationUpdated.AddListener(ObjectUpdatedEvent); //이벤트 등록 (델리게이트)

        _shipObjs.Add(key, copyPrefab);
    }