Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android查找最近的资源_Android_Google Maps_Google Maps Api 2 - Fatal编程技术网

Android查找最近的资源

Android查找最近的资源,android,google-maps,google-maps-api-2,Android,Google Maps,Google Maps Api 2,我正在尝试制作一个android应用程序,它可以在基于谷歌地图的地图上找到最近的资源 我将这些资源保存在SQLite数据库中 我使用的功能是: protected void findClosestResources(LatLng mCurrentLocation, GoogleMap map,Context context){ Double currentLatitude=mCurrentLocation.latitude; Double

我正在尝试制作一个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和银行位置数据。)

我能做些什么使它更准确

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

如果你从API(例如谷歌的location API和/或Foursquare)中提取ATM和银行位置,那么你现在在地图中看到的似乎就是这样。换句话说,根本没有问题:银行有可能不在附近安装自动取款机。谁知道呢


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

哦,我想我不是天生会问这种问题的,因为每次我问安卓问题时,似乎都会被否决,而不知道为什么:(我更新了描述,希望它更清楚(希望这就是否决的原因)我希望有人能给我一个解决这个难题的办法。我不是落选者,但我有一些建议给你。首先,改进你的问题格式:“漂亮”问题很重要。问问自己:这足够好读吗?第二,尽量简洁:不要过度解释与实际问题无关的情况。消除所有不必要的“噪音”;只问一件事,只问一件事。祝你好运!我想还不太清楚为什么要添加额外的细节而不问一件事?我如何优化现有代码以使结果更准确accurate@ridsatrio这更好吗?事实上我已经手动添加了位置,附近有一台自动取款机,我怀疑这与cur有关地球的温度…@fuseteam在如此短的距离内极不可能。但这是我的输出……虽然最近的橙色标记应该是我已经仔细查看了我的数据,它看起来是准确的,我只需要1/cos(lat)的校正系数对于纵向微分和平方差,实际上现在我想我只需要修正因子,把两个位置都当作向量