只需轻轻一按Google Map V2,即可移动标记?

时间:2014-04-02 09:17:09

标签: android google-maps

有没有什么方法可以在Google Map V2上点击一次(不可拖动)使标记可触摸和移动?

我的意思是当我触摸它时,让它可以移动到我想要在地图上的任何位置。

对代码进行了哪些修改?

Googlemap.setOnMarkerClickListener(new OnMarkerClickListener() {

            @Override
            public boolean onMarkerClick(Marker marker) {
                String msg = marker.getTitle() + " ("
                        + marker.getPosition().latitude +    ","
                        + marker.getPosition().longitude + ")";
                Toast.makeText(MapActivity.this, msg, Toast.LENGTH_SHORT)
                        .show();
                return false;
            }
        });

    }
    return (Googlemap != null);
}

Googlemap.setOnMarkerDragListener(new OnMarkerDragListener() {

        @Override
        public void onMarkerDragStart(Marker arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onMarkerDragEnd(Marker marker) {
            // TODO Auto-generated method stub
            Geocoder gc = new Geocoder(MapActivity.this);
            List<Address> list = null;
            LatLng latlng = marker.getPosition();

            try {
                list = gc.getFromLocation(latlng.latitude,
                        latlng.longitude, 1);
            } catch (IOException e) {
                e.printStackTrace();
                return;
            }

            Address add = list.get(0);
            marker.setTitle(add.getLocality());
            marker.setSnippet(add.getCountryName());

        }

        @Override
        public void onMarkerDrag(Marker arg0) {
            // TODO Auto-generated method stub

        }
    });

1 个答案:

答案 0 :(得分:0)

所以你的GoogleMap上有一个标记(没有其他像折线/多边形)。如果您有map的对象GoogleMap

假设您有一个全局变量boolean change=false 现在,当你触摸标记时,

map.setOnMarkerClickListener(new OnMarkerClickListener() {

            @Override
            public boolean onMarkerClick(Marker marker) {
                change=true;
                return true;
            }
        });

现在,在mapClickListener

中查看它
map.setOnMapClickListener(new OnMapClickListener() {

                public void onMapClick(LatLng arg0) {

                     if(arg0!=null && change){
                         change=false;
                          //clear map
                         map.clear(); 
                            // create marker
                             MarkerOptions marker = new MarkerOptions().position(arg0);

                             // Changing marker icon
                             marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.map_marker));

                             // adding marker
                             map.addMarker(marker);
                             }
                }
            });

如果您有其他标记或线条,请勿使用map.clear()。仅更改相应标记的值。