地理定位谷歌地图链接jQuery

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

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

Get Directions $("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?

替换更改href属性的行:

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

重定向:

 window.location.assign(gmapLink); 

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

以下适用于我。 请注意,我将上下文代理到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'); }