我正在尝试开发一个android应用程序,它可以根据经纬度执行任务。这就像如果我在特定的郊区(假设我在澳大利亚ACT的贝尔科宁,我想自动获取那个地方的详细信息)-如果我搬出贝尔科宁的边界,那么我必须显示一些其他详细信息。
如果你点击这个谷歌地图链接:http://goo.gl/4mItcF,你会看到红色的边框只有贝尔科宁郊区。
我的问题是如何在我的应用程序中给出边界(意思是我如何告诉我的应用程序我现在在ACT的贝尔科宁?是否通过沿边界获取经度/经度将它们存储在数据库中,并检查我是否在required lat/long中,如果是这样的话,数据库将只有Belconnen的巨大数字,ACT对吗?
还是有一种更简单的方法来获取边界?
让我知道!
谢谢!
发布于 2015-01-05 13:05:26
有一种方法,叫做反向地理编码。您可以通过两种方式使用它:
Android 1.使用Android-的 Geocoder
类
Geocoder gcd = new Geocoder(context, Locale.getDefault());
List<Address> addresses = gcd.getFromLocation(lat, lng, 1);
if (addresses.size() > 0)
System.out.println(addresses.get(0).getLocality());
在这里,您使用lat = -35.2374551
和lng = 149.0672515
表示澳大利亚的贝尔科宁。有关更多信息,请查看函数getFromLocation。
2.使用Google REST Web服务:
https://maps.googleapis.com/maps/api/geocode/json?latlng=-35.2374551,149.0672515 (JSON)
https://maps.googleapis.com/maps/api/geocode/xml?latlng=-35.2374551,149.0672515 (XML)
传递逗号分隔纬度和经度,您将获得响应中的最精确位置。在此处查找更多信息Reverse Geocoding google API
一旦你离开澳大利亚的贝尔科宁,相应的地址将不再包含这个,你可以放置一些逻辑来获得你想要的行为。
发布于 2015-01-05 22:31:52
据我所知,您希望创建一个位置感知应用程序。
根据安卓文档,谷歌Play服务位置API比安卓框架位置API (android.location)更受欢迎,作为向应用程序添加位置感知的一种方式。
步骤1-知道用户的当前位置
为此,谷歌推荐使用FusionProvider接口。它是Google Play服务中的位置API之一,您可以在其中指定高级别的要求,如高精度或低功耗。它还可以优化设备对电池电量的使用。
Step 2 -基于在location对象中检索到的纬度和经度信息,您可以使用以下Google服务来获取location的邮政编码。
http://maps.googleapis.com/maps/api/geocode/json?latlng=lattitude,longitude&sensor=true
第3步-检索位置信息的频率
持续打开监听器会对设备电池产生很大影响。因此,为了避免这种情况,我们需要最小化检索位置信息的频率。
我建议测量用户行驶的距离,并在此基础上设置下一个位置更新触发器。由于您只关心边界,我们可以根据设备加速来设置较高的值。有关如何有效实现此功能的更多详细信息,请参阅以下链接。https://stackoverflow.com/a/11644809/623517
希望这能有所帮助。
发布于 2014-12-22 14:26:44
您可以从lat获取完整地址,然后搜索您的城市或位置。这个答案解释了如何做到这一点:How to get complete address from latitude and longitude?
如果你想要更多的灵活性,你可以使用geofence:http://developer.android.com/training/location/geofencing.html
https://stackoverflow.com/questions/27604145
复制相似问题