Google地图通过Android中的地理编码器返回错误的位置

时间:2016-09-10 15:35:08

标签: android google-maps google-maps-api-3 geocoding google-geocoder

我正在使用谷歌地图,我想在其中搜索位置,但它返回错误的位置。我找不到它的问题,我需要建议。请有人告诉我该怎么办?

EditText sLocation = (EditText)getActivity().findViewById(R.id.editText1);
                location = sLocation.getText().toString();

                List<android.location.Address> addressList= null;

                if (location != null || location.length()>0) {
                    Geocoder geocoder = new Geocoder(getActivity().getApplicationContext());
                    try {
                        addressList = geocoder.getFromLocationName(location, 1);

                    } catch (IOException e) {

                            e.printStackTrace();
                    }
                    android.location.Address address = addressList.get(0);
                    String locality = address.getLocality();
                    Toast.makeText(getActivity(), locality, Toast.LENGTH_LONG).show();
                    LatLng latlng = new LatLng(address.getLatitude(), address.getLatitude());
                    gMap.addMarker(new MarkerOptions().position(latlng).title("Marker"));
                    gMap.animateCamera(CameraUpdateFactory.newLatLng(latlng));

                }

1 个答案:

答案 0 :(得分:0)

我在谷歌地图上的位置错误,因为我没有得到正确的纬度和经度。现在我通过以下代码geocoder获得了正确的位置。

sButton =(Button) v.findViewById(R.id.generalId);
sButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            hideSoftKeyboard(v);
            EditText sLocation = (EditText)getActivity().findViewById(R.id.editText1);
            location = sLocation.getText().toString();

            List<android.location.Address> addressList= null;

            if (location != null || location.length()>0) {
                Geocoder geocoder = new Geocoder(getActivity().getApplicationContext());
                try {
                    addressList = geocoder.getFromLocationName(location, 1);

                } catch (IOException e) {

                        e.printStackTrace();
                }

                android.location.Address address = addressList.get(0);
                String locality = address.getLocality();
                Toast.makeText(getActivity(), locality, Toast.LENGTH_LONG).show();
                double latitude = address.getLatitude();
                double longitude = address.getLongitude();
                LatLng latLng = new LatLng(latitude, longitude);
                gMap.addMarker(new MarkerOptions().position(latLng).title("Marker"));
                gMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));

            }

        }
    });

而不是

EditText sLocation = (EditText)getActivity().findViewById(R.id.editText1);
location = sLocation.getText().toString();

                List<android.location.Address> addressList= null;

                if (location != null || location.length()>0) {
                    Geocoder geocoder = new Geocoder(getActivity().getApplicationContext());
                    try {
                        addressList = geocoder.getFromLocationName(location, 1);

                    } catch (IOException e) {

                            e.printStackTrace();
                    }
                    android.location.Address address = addressList.get(0);
                    String locality = address.getLocality();
                    Toast.makeText(getActivity(), locality, Toast.LENGTH_LONG).show();
                    LatLng latlng = new LatLng(address.getLatitude(), address.getLatitude());
                    gMap.addMarker(new MarkerOptions().position(latlng).title("Marker"));
                    gMap.animateCamera(CameraUpdateFactory.newLatLng(latlng));

                }