0

アドレスから座標を取得するために Geocoder を使用しています。Geocoder から回答が得られたら、ユーザーにダイアログを表示して、ユーザーが正しい住所を選択できるようにします (世界中の同じ名前の通りがたくさんある可能性があります)。これは方法です:

    private LatLng parsearDireccion(String direccion) {

    Geocoder coder = new Geocoder(c);

    try {
        adress = (ArrayList<Address>) coder.getFromLocationName(direccion, 30);

        if(adress.size()>0){
            AlertDialog.Builder builderSingle = new AlertDialog.Builder(
                    LeaveParamsActivity.this);

            builderSingle.setTitle(getString(R.string.selectaddress));
            final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                    c,
                    android.R.layout.select_dialog_singlechoice);
            for(int i=0;i<adress.size();i++){
                String ciudad=adress.get(i).getLocality();
                String calle=adress.get(i).getThoroughfare();
                if(calle==null){
                    calle=adress.get(i).getAddressLine(0);

                }


                if(ciudad==null){
                    ciudad=adress.get(i).getSubLocality();

                }
                if(ciudad==null){
                    ciudad=adress.get(i).getAdminArea();

                }
                arrayAdapter.add(calle+","+ciudad);
            }

            builderSingle.setAdapter(arrayAdapter,
                    new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {

                    Address location = adress.get(which);
                    lat = location.getLatitude();
                    lon = location.getLongitude();
                    dialog.dismiss();

                }
            });
    builderSingle.show();
        }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   
    LatLng coords=new LatLng(lat, lon);
    return coords;
}

問題は、ユーザーがダイアログ オプションをクリックする前に返されることです...そのため、座標は null です。ユーザーがダイアログのオプションの 1 つをクリックするのを待ってから、プログラムの実行を続行するにはどうすればよいですか?

ありがとうございました。

4

1 に答える 1

0

それを無効にしてリターンを削除し、LatLngを返す別のメソッドを作成してダイアログに入れ、変数として使用するだけです

于 2013-09-26T10:30:19.747 に答える