在行动之前获得用户的经度和纬度

时间:2015-01-25 14:49:59

标签: javascript php html5 google-maps

我知道如何通过手机上的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);
    }

}

1 个答案:

答案 0 :(得分:0)

我建议使用navigator.geolocation.watchPosition而不是navigator.geolocation.getCurrentPosition,这样一来,这个位置会自行更新并且可能更准确。

至于问题的其余部分,你的界面是什么样的?你为什么以及什么时候提交表格?也许您可以使用AJAX来获取数据?