从三个Android位置提供商处获得最佳位置估算的方法

时间:2013-07-24 02:06:01

标签: java android geolocation gps

在阅读了这篇较早的帖子Good way of getting the user's location in Android之后,我想知道是否有人有任何关于如何解决这个问题的理论来找到最佳的位置估计。显然GPS是理想的,但假设一秒钟,它经常会给出一个不好的措施。

让我说我得到三个衡量标准GPSWIFICell Tower及其准确度,您可以建议哪些方法找到“最佳”位置?

我最初的反应是做一些类型的加权质心函数,其中我有三个点,并为所有三个点分配权重以获得准确性,然后用给定的精度找到最接近三个点的点。我的另一个想法是使用机器学习,但这看起来真的太过分了,除非我专门为解决这个问题做了些什么。思考?这主要是基于我想知道Skyhook如何使用数据解决问题。

1 个答案:

答案 0 :(得分:1)

//declare constants

 // The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 20; // 10 meters

 // The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 2000 * 60 * 1; // 1 minute

public void getlocation() 
{  
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

   // Define the criteria how to select the locatioin provider        
    Criteria criteria = new Criteria();
    provider = locationManager.getBestProvider(criteria, false);
    locationManager.requestLocationUpdates(provider, MIN_TIME_BW_UPDATES,
                  MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

    if (locationManager != null) {
    Location location = locationManager.getLastKnownLocation(provider);

       if (location != null) {
          loclat = location.getLatitude();
          loclong = location.getLongitude();                                
       }
   }
}