1. 현재 위치 확인하기

JayYi edited this page Nov 2, 2016 · 16 revisions

현재위치 확인하기

  • 현재 사용자의 현재 위치를 확인하고자 할 때 사용됩니다.

API

Plengi.getInstance(Context context).refreshPlace()  
Parameter Type Description
context Context

Response

  • Loplat 서버로 부터 받은 위치 정보값은 PlengiEventLiestener 를 통해 받을 수 있습니다.

    Parameter Event Type Description
    PLACE PlengiResponse.ResposeType
  • 위치정보 획득시, 전달되는 위치 정보값은 다음과 같습니다.

    Parameter Data Type Response Class Description
    placeid long PlengiResponse.Place 장소 id
    name String PlengiResponse.Place 장소 이름
    tags String PlengiResponse.Place 장소와 관련된 태그
    lat double PlengiResponse.Place 장소 위도
    lng double PlengiResponse.Place 장소 경도
    floor int PlengiResponse.Place 장소 층 정보
    category String PlengiResponse.Place 장소 유형
    accuracy float PlengiResponse.Place 장소 인식 정확도
    threshold float PlengiResponse.Place 장소 인식 허용치
    lat_est double PlengiResponse.Place 장소 위도 (추정)
    lng_est double PlengiResponse.Place 장소 경도 (추정)
    client_code String PlengiResponse.Place Client code
    loplatid double PlengiResponse.Place (loplat server에 저장된) 장소 id
    • accuracy > threshold: 현재 위치 내에 있는 경우
    • 그 외에 경우: 현재 위치 근처에 있는 경우
  • 위치 정보 획득 실패 혹은 Client 인증 실패시 error 메세지가 전달 됩니다.

    Parameter Event Type Description
    ERROR_CLOUD_ACCESS PlengiResponse.Result -
    • Error Message
    Value Parameter Data Type Description
    Not Allowed Client errorReason String Cleint 인증 실패
    Location Acquisition Fail errorReason String 위치 정보 획득 실패

    [Sample Code]

    public class LoplatPlengiListener implements PlengiListener {
    
        @Override
        public void listen(PlengiResponse response) {
                System.out.println("LoplatPlengiListener: " + response.type);
    
         // handle cloud access error
          if(response.result == PlengiResponse.Result.ERROR_CLOUD_ACCESS) {
                String errorReason = response.errorReason;
    
                //broadcasting a message to your application
                return;
           }
    
            // get location information from loplat server (refreshPlace())
            if(response.type == PlengiResponse.ResponseType.PLACE) {
    
                String name = response.place.name;  // detected place name
                String tags = response.place.tags;
                double lat = response.place.lat;    // detected place location (latitude)
                double lng = response.place.lng;    // detected place location (longitude)
                int floor = response.place.floor;   // detected place's floor info
                String client_code = response.place.client_code;    // client_code
    
                float accuracy = response.place.accuracy;
                float threshold = response.place.threshold;
    
                String placeinfo = name + ": " + tags + ", " + floor + ", " +
                                String.format("%.3f", accuracy) + "/" + String.format("%.3f", threshold);
    
                if(accuracy > threshold) {
                    // device is within the detected place
                    placeinfo += " (In)";
                }
                else {
                    // device is outside the detected place
                    placeinfo += " (Nearby)";
    
                    // in case accuracy is 0.1, actual distance is 40~50M
                }
    
                if(client_code != null) {
                    placeinfo += ", client_code: " + client_code;
                }
            }
        }
     }