获取Android中地图上显示标记的位置

时间:2016-02-04 06:04:25

标签: android touch google-maps-markers android-alertdialog

如何在地图屏幕上获取用户触摸的坐标(x,y)。我担心的是在屏幕上显示点击标记的位置。目前我能够获得点击标记的LatLng,但无法获得点数屏幕。我想在单击的标记上显示一个对话框,如customInfoWindow。 请提出任何解决方案。 谢谢

1 个答案:

答案 0 :(得分:0)

如果您有坐标,可以获取某个位置的实际地址。它被称为反向地理编码

在标记上设置onMarkerClickListener,然后对坐标进行反向地理编码以异步获取地址,然后在标记的信息窗口中设置结果。

有关所有详细信息,请参阅this文章。

获取物理地址的示例代码 -

class GetAddress extends AsyncTask<LatLng, Void, String> {

    @Override
    protected String doInBackground(LatLng... params) {
        Geocoder geocoder = new Geocoder(context, Locale.getDefault());
        String result = "No Result";
        try {
            List<Address> addresses = geocoder.getFromLocation(params[0].latitude, params[0].longitude, 1);

            if (addresses != null && addresses.size() != 0) {
                Address address = addresses.get(0);
                ArrayList<String> addressFragments = new ArrayList<>();
                for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
                    addressFragments.add(address.getAddressLine(i));
                }

                result = TextUtils.join(System.getProperty("line.separator"),
                        addressFragments);
                return result;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return result;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        //Here set the address to where ever you want.
    }

在标记上设置监听器 -

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            new GetAddress().execute(marker.getPosition());
        }
    });