Javascript 在操作之前获取用户的经度和纬度
我知道如何通过手机上的HTML5获取经度和纬度。但问题是,在用户每次访问我网站上的谷歌地图(locations/map)之前,如何获取用户的位置。我需要它,因为我正在使用haversine sql收集用户位置周围100公里范围内的数据。我曾考虑过提交带有经度和纬度值的表单,但这并不是很有效,因为用户可以直接打开地图的url(位置/地图),然后就不会发布任何值 问题是我必须使用javascript来获取lat和lng值,但我不确定将ti发送到sql查询的最佳方式是什么 哈弗森SQLJavascript 在操作之前获取用户的经度和纬度,javascript,php,html,google-maps,Javascript,Php,Html,Google Maps,我知道如何通过手机上的HTML5获取经度和纬度。但问题是,在用户每次访问我网站上的谷歌地图(locations/map)之前,如何获取用户的位置。我需要它,因为我正在使用haversine sql收集用户位置周围100公里范围内的数据。我曾考虑过提交带有经度和纬度值的表单,但这并不是很有效,因为用户可以直接打开地图的url(位置/地图),然后就不会发布任何值 问题是我必须使用javascript来获取lat和lng值,但我不确定将ti发送到sql查询的最佳方式是什么 哈弗森SQL select(
select("6371 * acos(cos(radians(:MOJLAT)) * cos(radians(geolat)) * cos(radians(geolong) - radians(:MOJLONG)) + sin(radians(:MOJLAT)) * sin(radians(geolat)) )) AS distance_query HAVING distance_query <= 100");
addParams([':MOJLAT'=>$_POST["geolat_beforeaction"], ':MOJLONG'=>$_POST["geolong_beforeaction"]]);
我建议使用navigator.geolocation.getCurrentPosition,而不是navigator.geolocation.getCurrentPosition
,这样位置会自动更新,并且可能更准确
至于问题的其余部分,您的界面是什么样子的?为什么以及何时提交表格?也许您可以使用AJAX获取数据?这是从数据库生成的带有PIN的google地图。我正在提交表格,将lat和lng坐标发送到haversine sql。AJAX会让事情变得更复杂Dok,AJAX会让事情变得更复杂,但至少你想要的值会更新得更频繁。我在想,但如果用户关闭浏览器或断开与internet的连接,然后稍后刷新站点(我指的是手机),它应该还能工作,为什么不能呢?让我知道您认为可能会出现什么问题?
if(navigator.geolocation)
{
var options= {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
navigator.geolocation.getCurrentPosition
(
function(position)
{
find(position);
},
function()
{
//handleNoGeolocation(true);
},
options
);
}
function find(position)
{
//data to post to database. fill input fields with longitude and latitude
var geoLat, geoLong;
if(geoLat=$("#geolat"))
{
geoLat.val(position.coords.latitude);
}
if(geoLong=$("#geolong"))
{
geoLong.val(position.coords.longitude);
}
}