【发布时间】:2017-01-19 20:55:59
【问题描述】:
我的应用具有地图,当用户长按它时,我需要当前手机位置出现在地图上。正如@Chen advised 看起来 getCurrentLocation() 是在我的情况下使用的正确方法。请注意,我不想使用 LocationListener,因为我希望用户能够控制何时更新他们的位置。
此外,我选择此手动位置更新是因为@Shai-Almog discouraged location polling。因此,在阅读完此post 后,我首先将超时设置为 20 秒,如下所述以获取当前手机位置:
Dialog ip = new InfiniteProgress().showInifiniteBlocking();
Location currentLocation = locationManager.getCurrentLocationSync(
ParametresGeneraux.LOCATION_TIMEOUT_MILLI);
// We try to get something
if (currentLocation == null) {
currentLocation = locationManager.getLastKnownLocation();
}
ip.dispose();
但这还不够,尽管工具栏中出现了小位置图标,但“总是”提供了最后一个已知位置(我可能没有连续数 5 次)。所以我将它设置为 40 秒,但实际的当前位置在这两倍大的时间之后也没有出现(只提供了最后一个已知位置 > 2 公里)。
但是,如果我在 Android (KitKat) 上启动 Google 地图,位置就会立即准确。然后,如果我回到我的应用程序并按地图,则会找到当前位置。实际上,我发现了一个 post 处理 Google Maps 和 Android API 之间的准确性差异,但它与上海/中国有关,而不是欧盟(法国)。
因此我的问题是双重的:
首先,Google Maps 和 Codename One 在同一设备上怎么会有如此巨大的差异?
那么如果我没有为
getCurrentLocation()设置超时,当用户厌倦了等待时,如何中断位置搜索?
任何帮助表示赞赏,
BR
【问题讨论】: