反向地理编码以获取区域信息

时间:2019-07-01 08:34:08

标签: java android geocoding reverse-geocoding fusedlocationproviderapi

我正在创建一个移动应用程序,它将获取用户当前的坐标并显示有关该区域的一些信息。

到目前为止,我所做的是

使用熔融LocationApi,我正在为用户获取当前坐标。 基于坐标,我正在服务器端进行一些半径计算,并将区域信息发送到用户应用程序。在这个半径范围内,有时我会获得有关多个区域的信息。

现在,我想在区域信息活动的顶部放置一个标签,以显示当前区域的名称(基于坐标)。

这是我现在获取区域信息的方式。 (SO上另一个问题的代码)

        public void getAddress(double lat, double lng) {
    try {
        Geocoder myLocation = new Geocoder(getApplicationContext(), Locale.getDefault());
        List<Address> myList = null;

        myList = myLocation.getFromLocation(lat, lng, 1);

        Address address = myList.get(0);
        String addressStr = "";
        addressStr += address.getAddressLine(0) + ", \n";
        addressStr += address.getAddressLine(1) + ", \n";
        addressStr += address.getAddressLine(2);

        Log.e("IGA", "Address" + addressStr);

    } catch (IOException e) {
        e.printStackTrace();
    }
}

此方法的问题在于它根本不可靠,有时会显示可用的完整地址,例如。 STREET_NUMBER,STREET_NAME,AREA_NAME,STATE_PROVINCE,CITY,COUNTRY等。 有时地址是一些短数据。

来自LOG的第一组坐标的样本数据1

2344, Ar Rawabi, Olaya, Riyadh 34242 3432, Saudi Arabia
    Saudi Arabia

这里2322可以是街道编号(不确定),但Ar Rawabi是我要寻找的小区域(2-3公里)。而奥拉亚(Olaya)可能约为10-15公里。

来自LOG的另一组坐标的采样数据2

3424, Al Fasiliyah, Riyadh 3443 5452, Saudi Arabia
    Saudi Arabia

这里3424可以是街道号码,但区域名称不可用。再一次,法西里亚(Al Fasiliyah)是一个更大的区域。

我只想从这里获取区域名称。有什么办法只能获取区域名称。我曾经用this link from google docs来尝试了解这种情况,但即使在这里,地址也不一致且不可靠。

我试图从坐标中仅获取Ar Rawabi和OtherAreaName,因为这些是区域名称。

感谢您的帮助。

0 个答案:

没有答案