Android找到最近的资源

时间:2015-11-30 01:01:14

标签: android google-maps google-maps-api-2

我正在尝试制作一款基于Google地图在地图上找到最近资源的Android应用 我将这些资源保存在SQLite数据库中 我使用的功能是:

    protected void findClosestResources(LatLng mCurrentLocation, GoogleMap map,Context context){
            Double currentLatitude=mCurrentLocation.latitude;
            Double currentLongitude=mCurrentLocation.longitude;
            String selection=Main_Activity.CategorySelect;
            //Determine yhe closest resources by substrating Latitude and Longitude
            /*Location=Place.rawQuery("SELECT * FROM "+LOCATION_TABLE_NAME+
                    " WHERE "+selection+
                    " GROUP BY "+M_COLUMNS[4]+
                    " HAVING MIN(ABS("+currentLatitude+"-"+M_COLUMNS[1]+")) " +
                    "AND MIN(ABS("+currentLongitude+"-"+M_COLUMNS[2]+"))",null);*/
if (Location.moveToFirst()) {//select the first row in the cursor object
            while (!Location.isAfterLast()) {//verifies if it is the last row
                LocationList thisLocation= new LocationList(Location);
                getInformationAbout(Location);
                PlaceMakerOn(map);
                PlaceList.add(thisLocation);
                Location.moveToNext();//select the next row
            }
            Location.close();//close the connection with database
        }
乍一看似乎有效,但经过仔细检查后结果并不准确。 下图是一个例子:搜索了atm和银行资源。 而它找到的银行(蓝色标记)确实最接近绿色,它找到的ATM(橙色标记)不是

由于银行有ATM,因此ATM标记不应该出现在离银行很远的地方。因为这意味着,根据功能,橙色标记比蓝色标记更接近绿色标记 我该怎么做才能让它更准确?

1 个答案:

答案 0 :(得分:0)

您的标记放置逻辑似乎工作得很好。我现在主要关心的是数据本身。 (准确地说,ATM和银行位置数据。)

  

我该怎么做才能让它更准确?

好了,再看看你的数据。如果您手动填充此数据(例如,您自己将这些纬度 - 经度点写入数据库文件,或有人向您提供),那么您应该尝试重新审视并改进它。

如果您从API(例如Google的位置API和/或Foursquare&#)中提取这些ATM和银行位置,那么您现在在地图中看到的内容似乎真的如此案子。换句话说,根本没有问题:银行有可能不在附近有自动取款机。谁知道?

总而言之,这里的真正问题不在于您的代码。作为放置在该示例中的标记,您提供的看起来很好(它们都处于合理的位置)。我怀疑用于填充这些标记的数据是真正的罪魁祸首。