2012-06-18 2 views
0

geolocation을 사용하여 현재 위치의 위도와 경도를 얻으려고합니다. 최근까지도 매우 유사한 코드가 작동했으며 왜 작동이 멈췄는지 알 수 없습니다. 더 이상 변수 위도 또는 경도을 설정하지 않습니다. js 코드를 살펴볼 때 getCurrentPosition() 메서드는 건너 뛰고 이유는 확실하지 않습니다. 기이하게도 getCurrentPosition() 메서드에 경고 상자를 추가하면 위도와 경도가 올바르게 표시되고 표시됩니다 ... 왜 그런지 알지 못합니다.navigator.geolocation.getCurrentPosition()가 작동하지 않습니다.

var gl; 
try { 
    if (typeof navigator.geolocation === 'undefined'){ 
     gl = google.gears.factory.create('beta.geolocation'); 
    } else { 
     gl = navigator.geolocation; 
    } 
} catch(e) {} 

var latitude; 
var longitude; 

if (gl) { 
    gl.getCurrentPosition(
     function (position) { 
      latitude = position.coords.latitude; 
      longitude = position.coords.longitude; 
      //alert("got the lat & long - lat=" + latitude + ", lng=" + longitude); 
     }, 
     function (error) { 
      alert("Error getting geolocation:" + error); 
     } 
    ); 
} else { 
    alert("Geolocation services are not supported by your web browser."); 
} 

그런 다음 Google Maps API를 사용하여지도에 일부 마커를 설정하십시오.

, 당신에게

피터을 주셔서 감사

편집 여기

이상한 행동을 보여 JSFiddle의 코드 :

http://jsfiddle.net/JtmCV/

+2

코드를 정확하게 들여 씁니다. 우리가 따라하기 쉽고 잠재적 인 문제를 더 쉽게 발견 할 수 있도록 도와줍니다. – jsalonen

+1

죄송합니다. 지금은 더 좋았을 것입니다 (엉망인 함수 이름 일뿐입니다). – stank345

+0

JS에서'alert()'이후에 뭔가가 작동하는 경우, 어딘가에 경쟁 조건이 있음을 알게됩니다. 함수가 건너 뛰었습니까? 당신은 "넘어서"오히려 넘어서 "들어갔습니까"? –

답변

1

난 그냥 당신의 jsfiddle을 시도하고 괜찮 았는데 (Win 7의 Chrome 19), 왜 그렇게해야하는지 알 수 없습니다. 문제를 일으킨다.

그렇다면 navigator.geolocation.getCurrentPosition 대신 navigator.geolocation.watchPosition으로 전환하는 것이 좋습니다. 최근에 Geolocation 시스템에서 작업을 수행 한 결과, maximumAge 값을 지정하기 위해 options 매개 변수를 사용하는 경우에도 getCurrentPosition은 신뢰할 수없는 캐시 된 위치를 반환 할 수 있습니다. 다음 중 하나에 해당하는 후

내 최신 버전의 시계를 중지 : 다섯 번째 위치가 반환 한

  • 정확성은 시계가 시작된 이후 시간이 100m
  • 에서 30 이상입니다 초
관련 문제