자바스크립트 함수 중에서 HTML 5 표준(확실한지 모름)으로 제공되는 현재 위치를 획득하는 함수.
용법은 아래와 같다.
navigator.geolocation.getcurrentposition(성공 시 Callback, 실패 시 Callback, 옵션);
가끔 이 함수가 됐다 안됐다 오락가락하는 경우가 있다.
외국 사례에서 확인할 수 있다.
대체적으로 이들은 timeout을 원인으로 꼽고 있다.
나의 경우는 getCurrentPostion를 호출하는 메소드 맨처음에 호출하면 잘 수행이 되지만, nested함수, 아니 getCurrentPostion함수 앞에 다른 함수가 하나라도 존재하게 되면 수행되지 않는것을 볼 수 있었다.
따라서, 짧은 식견으로 분석해 본 결과 getCurrentPostion함수가 callback함수를 쓴다는게 바로 포인트 이다. (timeout은 원인이 아니라는 것!) callback이 일어나야 하는데 다른 함수가 동작하게 되어 무언가 꼬이는 것 같아 보였다.
해결책은.... 없어!!!! ㅠㅠㅠㅠㅠ 뭐야 이거!!
그냥,
function toggleGeotag(){navigator.geolocation.getCurrentPosition(successGeoLocation, errorHandler, {maximumAge:60000, timeout:10000});}
이렇게 쓰고 getCurrentPostion함수 앞에는 어떠한 함수도(if함수 같은 것) 두지 말자. - 이러면 거의 100% getCurrentPosition함수는 수행된다.
대신 성공 시 일어나는 callback함수 안에 다른 모든 작업을 다 포함 시켜두는 수 밖에 없는것으로 보인다.
절대, 이것은 정답이 아님을 밝히고 마무리 지음.



최근 덧글