2012-05-04 27 views
1

當我點擊移動電話上的鏈接時,我想提示用戶是否要允許檢測到該位置,如果是,請打開Goog​​le地圖並指示從他們的當前位置開始到最終目的地。地理定位谷歌地圖鏈接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屬性:

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

一個重定向:

window.location.assign(gmapLink); 

這也將是值得移動e.preventDefault()if (navigator.geolocation)塊內,所以,如果沒有地理位置可用,用戶仍然使用谷歌地圖,並可以自己插入他們的位置。

+0

感謝您的支持。一個問題 - 如果用戶不希望網站獲取位置,我如何將它們重定向到最初在html中設置的href(使用google maps鏈接)? – 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'); 
}