如何使用maps API从邮政编码中获取街道名称?

时间:2017-08-03 03:50:28

标签: postal-code

我正在寻找改变邮政编码的解决方案,例如DD3 7BN,但不使用地理位置。我找到了一个使用url http://maps.googleapis.com/maps/api/geocode/json?address=DD37bn的解决方案。 一个人提供了另一个解决方案,但它不适合我。

但它显示错误GRPS失败。什么是我的问题的最佳解决方案?

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getAddressByPostalCode("");
    }


    public void getAddressByPostalCode(String val_pcode) {

        Geocoder geocoder = new Geocoder(this.getApplicationContext(), Locale.getDefault());

        try {

            List<Address> addresses1 = geocoder.getFromLocationName (val_pcode, 1);

            Address obj1 = addresses1.get(0);

            List<Address> addresses = geocoder.getFromLocation(obj1.getLatitude(), obj1.getLongitude(), 1);
            Address obj = addresses.get(0);
            /*TextView street = (TextView)findViewById(R.id.editText1);
            TextView pcode = (TextView)findViewById(R.id.editText2);
            TextView blk = (TextView)findViewById(R.id.editText3);
            TextView build = (TextView)findViewById(R.id.editText4);

            street.setText(obj.getThoroughfare());
            pcode.setText(obj.getPostalCode());
            blk.setText(obj.getSubThoroughfare());
            build.setText(obj.getPremises());*/


        } catch (IOException e) {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

请注意,英国邮政编码don't always relate to single street, HD7 5UZ涵盖7,因此谷歌API不会返回&#34;路线&#34;元素 - http://maps.googleapis.com/maps/api/geocode/json?address=HD75UZ

我不认为有任何开放数据集可以提供邮政编码和街道之间的链接,但有一些数据集包含streetspostcodes的完整列表以及其他地理数据

英国的另一个解决方案是使用查看皇家邮政PAF数据集的API,这将在邮政编码与其相关的街道之间建立联系。这将带来成本,但通常如果您只使用街道名称,而不是前提级别数据,则成本非常低。

一个例子是来自Allies Computing(我工作的人)的"street" endpoint,它将返回一系列街道。您可以让用户选择正确的一个,或者如果只有一个,则自动选择它们。

大多数其他PAF经销商也提供街道级搜索,可以通过Powered by PAF website找到它们。