2012-05-04 2 views
1

휴대 전화의 링크를 클릭하면 위치를 감지 할 수 있는지 묻는 메시지가 표시됩니다. 예인 경우 길 찾기가있는 Google지도를 엽니 다. 현재 위치에서 최종 목적지까지 시작합니다.Geolocation Google지도 링크 jQuery

이것은 내가 가지고있는 것이지만 링크를 클릭하면 폴백 기본 링크로 이동합니다.

<a class="geo" href="http://maps.google.com/maps?ll=40.822419,-73.993124">Get Directions</a> 

$("a.geo").click(function(e)) { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(getLoc, handle_errors); 
    } 
    e.preventDefault(); 
}); 

function getLoc(position) { 
    var geoLat = position.coords.latitude; 
    var geoLon = position.coords.longitude; 
    var gmapLink = "http://maps.google.com/maps?saddr=" + geoLat + "," + geoLon + "&daddr=40.822419,-73.993124"; 
    $("a.geo").attr("href", gmapLink); 
} 

사용자가 링크를 클릭 한 후 href를 새 위치로 바꾸려면 어떻게합니까?

답변

2

href 속성을 변경하여 줄 바꾸기 : 것을 더가있는 경우 있도록

window.location.assign(gmapLink); 

그것은 또한 if (navigator.geolocation) 블록 내부의 e.preventDefault() 이동 가치가 없을 것입니다 : 리디렉션으로

$("a.geo").attr("href", gmapLink); 

을 geolocation을 사용할 수 있지만 사용자는 여전히 Google지도로 이동하여 위치를 직접 삽입 할 수 있습니다.

+0

감사합니다. 하나의 질문을 tho - 사용자가 위치를 얻을 수있는 사이트를 원하지 않는다면, 어떻게 html로 (구글 맵스 링크로) html로 원래 설정 되었습니까? – cusejuice

0

다음은 저에게 적합합니다. getLoc 함수에 컨텍스트를 프록시 처리하여 $ (this)가 여전히 콜백을 가져올 링크이고 실제로 클릭 링크가 추가되도록 클릭 트리거를 추가합니다. 또 다른 해결책은 window.location을 사용하는 것입니다.

$("a.geo").click(function(e) {    
    if (navigator.geolocation) { 
     e.preventDefault(); 
     navigator.geolocation.getCurrentPosition(
      $.proxy(getLoc, $(this))      
      , handle_errors);   
    } 
}); 

function getLoc(position) {      
    var geoLat = position.coords.latitude; 
    var geoLon = position.coords.longitude; 
    var gmapLink = "http://maps.google.com/maps?saddr=" + geoLat + "," + geoLon + "&daddr=40.822419,-73.993124";   
    $(this).attr("href", gmapLink); 
    $(this).trigger('click'); 
}