-2

如何根据android中的当前位置查找最近的1000米经纬度,以从sql lit数据库中获取最近的位置

4

3 回答 3

2

我不知道您为什么要使用手机数据库来存储您的所有位置。使用服务器端更安全。假设您的数据库表中保存了纬度和经度,则仅在查询中需要修改。以下是解决我的问题的 SQL 查询:

"SELECT * FROM places WHERE (acos(sin(places.lat * 0.0175) * sin($userLat * 0.0175) + cos(places.lat * 0.0175) * cos($userLat * 0.0175) * cos(($userLon * 0.0175) - (places.lon * 0.0175))) * 3959 <= $locateRadius)"
//userLat and userLon refer to your current location
于 2015-06-16T18:19:16.470 回答
0

我不知道您说“sql lite 数据库”是什么意思,因为当前位置不应存储在手机上的任何数据库中,除非您将其明确存储在其他应用程序中。

这应该在您的主要活动中:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationlistener = new mylocationlistener();
locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationlistener);  

...

private class mylocationlistener implements LocationListener{
    @Override
    public void onLocationChanged(Location location) {
        if (location != null) {
            Log.d("latitude", location.getLatitude());
            Log.d("longitude", location.getLongitude());                
        }               
    }
}
于 2012-09-05T04:39:27.717 回答
0

实际上,我想您的问题更多是关于算法的,对吗?

本文档描述了几何近似的数据结构和算法,可能对您有所帮助。

https://www.box.com/s/7lomb99vsmjsh77ud4eh

于 2012-09-05T04:44:10.867 回答