문제상황
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을 국내 좌표로 설정하면 해결된다!
참고사항
'ReactNative' 카테고리의 다른 글
[ReactNative] Kakao Login API + iOS 토큰 받아오기 (0) | 2025.01.22 |
---|