본문 바로가기

ReactNative

[ReactNative] Naver Map API + iOS 좌표 주소로 변환

문제상황

Geolocation으로 위도와 경도를 받고 naver map api를 사용하여 주소로 변환하는 과정 중 [Error: No address found] 발생

 

코드흐름

//현재 위도, 경도 받기
export const getCurrentCoordinates = () => {
  return new Promise((resolve, reject) => {
    Geolocation.getCurrentPosition(
      position => {
        const { latitude, longitude } = position.coords;
        resolve({ latitude, longitude });
      },
      error => {
        reject('Error', `위치를 가져오는데 실패했습니다 : ${error.message}`);
      },
      //enableHighAccuracy : 위치 정확도를 위해 GPS 사용, timeout : 15초 안에 위치를 가져오지 못하면 에러, maximunAge : 10초 내의 캐시된 위치를 허용
      { enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 },
    );
  });
};

//위도, 경도를 받아 주소로 변환
export const getAddressFromCoordinates = async (latitude, longitude) => {
  try {
    const response = await axios.get(
      'https://naveropenapi.apigw.ntruss.com/map-reversegeocode/v2/gc',
      {
        params: {
          coords: `${longitude},${latitude}`, // 경도, 위도 순서
          orders: 'addr', // 주소 형식 (addr, roadaddr 등)
          output: 'json',
        },
        headers: {
          'X-NCP-APIGW-API-KEY-ID': NAVER_CLIENT_ID,
          'X-NCP-APIGW-API-KEY': NAVER_CLIENT_SECRET,
        },
      },
    );
    const result = response.data.results;
    if (result && result.length > 0) {
      // 주소 데이터 반환
      return (
        result[0].region.area1.name +
        ' ' +
        result[0].region.area2.name +
        ' ' +
        result[0].region.area3.name
      );
    } else {
      throw new Error('No address found');
    }
  } catch (error) {
    console.error('Reverse Geocoding Error:', error);
    return null;
  }
};

 

 

 

해결과정

어이없게도 시뮬레이터 주소 설정이 기본(샌프란시스코) 좌표로 되어있기 때문에 발생한 에러였다. Naver Map으로 샌프란시스코를 찾으니 당연히 에러가 날 수 밖에..

Features > Location > Custom Location

Features > Location > Custom Location을 국내 좌표로 설정하면 해결된다!

 

참고사항

Application의 Naver Cloud Services 목록

 

'ReactNative' 카테고리의 다른 글

[ReactNative] Kakao Login API + iOS 토큰 받아오기  (0) 2025.01.22