在Google地图中的标记上显示当前位置/地址/区域名称

时间:2015-02-23 11:31:33

标签: android google-places-api android-maps-v2

我创建了一个基本应用程序,它显示谷歌地图和标记。无论我点击哪里,标记都会显示在地图上,清除之前的位置。现在,我试图在标记处显示位置名称/地址/区域名称,只要我点击谷歌地图。但遗憾的是我的应用程序正在关闭。我暂时使用Toast来确认显示。我使用的听众是:

Temporary.java文件

googleMap.setOnMarkerClickListener(new OnMarkerClickListener() {

            @Override
            public boolean onMarkerClick(Marker marker) {
                 List<Address> address = null;
                 Geocoder geocode;
                // TODO Auto-generated method stub
                geocode = new Geocoder(Temporary.this,Locale.getDefault());
                try {
                    address=geocode.getFromLocation(currentGPS.latitude, currentGPS.longitude, 1);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                String address1=address.get(0).getCountryName();
                Toast.makeText(Temporary.this,address1, Toast.LENGTH_LONG).show();
                return false;
            }
        });

我又尝试了一个Listener,如下所示:

        googleMap.setOnMapClickListener(new OnMapClickListener() {

        @Override
        public void onMapClick(LatLng point) {

            List<Address> address = null;
             Geocoder geocode;
            // TODO Auto-generated method stub
            geocode = new Geocoder(Temporary.this,Locale.getDefault());
            try {
                address=geocode.getFromLocation(point.latitude, point.longitude, 1);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

             MarkerOptions markerOptions = new MarkerOptions();
             markerOptions.position(point);
             markerOptions.title("Area Name :"+address.get(0).getLocality());
             googleMap.clear();
             googleMap.addMarker(markerOptions);

        }
    });

仍然无法正常工作。哪里弄错了?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以在地图上设置InfoWindow,并在当前选择中对其进行自定义。

        map.setInfoWindowAdapter(new InfoWindowAdapter() {

                    @Override
                    public View getInfoWindow(Marker arg0) {
                        return null;
                    }

                    @Override
                    public View getInfoContents(Marker arg0) {
                        currentInfo = getLayoutInflater().inflate(R.layout.info_layout, null);
                        //Do what you want with the view
                        return currentInfo;
                    }
        }

请记住,标记有自己的位置,标题,颜色等。