我知道如何通过手机上的HTML5获取经度和纬度。但问题是如何在用户访问我网站上的谷歌地图(位置/地图)之前每次获取用户的位置。我需要它,因为我使用hasrsine sql来收集用户位置周围100公里的数据。我正在考虑提交具有经度和纬度值的表单,但由于用户可以直接打开地图的URL(位置/地图),然后不会发布任何值,因此效率不高。
问题是我必须使用javascript来获取lat和lng值,但我不确定将ti发送到sql查询的最佳方法是什么
Haversine SQL
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"]]);
HTML5地理位置
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);
}
}
答案 0 :(得分:0)
我建议使用navigator.geolocation.watchPosition
而不是navigator.geolocation.getCurrentPosition
,这样一来,这个位置会自行更新并且可能更准确。
至于问题的其余部分,你的界面是什么样的?你为什么以及什么时候提交表格?也许您可以使用AJAX来获取数据?