1

当我点击手机上的链接时,我想提示用户是否允许检测位置,如果允许,打开谷歌地图,其路线从当前位置开始到结束目的地。

这就是我所拥有的,但是当我单击该链接时,它会转到备用默认链接。

<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 替换为用户位置的新链接?

4

2 回答 2

2

替换更改href属性的行:

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

带有重定向:

window.location.assign(gmapLink);

e.preventDefault()移动块内部也是值得的if (navigator.geolocation),这样如果没有可用的地理位置,用户仍然可以访问谷歌地图并可以自己插入他们的位置。

于 2012-05-04T15:01:57.220 回答
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');
}
于 2012-05-04T15:18:05.153 回答