如何实现Android标记的拖放操作?

kak*_*a47 26 android drag-and-drop marker android-mapview

喜?我正在使用Android中的MapView应用程序.我有三个标记,我希望以后可以使用Google Map API getlocation-function.为了试一试,我想用拖放功能移动标记,然后检查位置.

任何人已经拖延到Android标记工作,或知道一种方法开始搞清楚?

/ AK

小智 47

实施Google Maps Android API v2,请参阅:https://developers.google.com/maps/documentation/android/并在GoogleMap对象setOnMarkerDragListener上设置.对于Ex:

map.setOnMarkerDragListener(new OnMarkerDragListener() {
        @Override
        public void onMarkerDragStart(Marker arg0) {
            // TODO Auto-generated method stub
            Log.d("System out", "onMarkerDragStart..."+arg0.getPosition().latitude+"..."+arg0.getPosition().longitude);
        }

        @SuppressWarnings("unchecked")
        @Override
        public void onMarkerDragEnd(Marker arg0) {
            // TODO Auto-generated method stub
            Log.d("System out", "onMarkerDragEnd..."+arg0.getPosition().latitude+"..."+arg0.getPosition().longitude);

            map.animateCamera(CameraUpdateFactory.newLatLng(arg0.getPosition()));
        }

        @Override
        public void onMarkerDrag(Marker arg0) {
            // TODO Auto-generated method stub
            Log.i("System out", "onMarkerDrag...");
        }
    });

//Don't forget to Set draggable(true) to marker, if this not set marker does not drag.

map.addMarker(new MarkerOptions()
    .position(crntLocationLatLng)
    .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_my_location))
    .draggable(true));
Run Code Online (Sandbox Code Playgroud)


Com*_*are 25

以下是我的一本书中的示例项目,该图书显示了Android版Google地图上标记的拖放移动.

简而言之,它用于onTouchEvent()检测用户何时触摸并将手指靠近标记.然后,它会从叠加层中删除标记,但会使用相同的图像放在地图的顶部RelativeLayout.然后,在"移动"触摸事件时,移动图像(比强制整个叠加重绘更快).当手指抬起时,图像被移除,但标记被放回到新点处的叠加层中.

  • 我认为这已经过时了.bcoz v2 dosenot支持overlay.Do你也有V2的东西 (3认同)

F.O*_*O.O 7

对于 MapsV2。使用谷歌地图事件。不要自己写。

        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {
                mVisitingMarker.setPosition(latLng);
                mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
            }
        });

        mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
            @Override
            public void onMarkerDragStart(Marker arg0) {
            }

            @SuppressWarnings("unchecked")
            @Override
            public void onMarkerDragEnd(Marker arg0) {
               Log.d("System out", "onMarkerDragEnd...");
                mMap.animateCamera(CameraUpdateFactory.newLatLng(arg0.getPosition()));
            }

            @Override
            public void onMarkerDrag(Marker arg0) {
            }
        });
Run Code Online (Sandbox Code Playgroud)