Android 谷歌地图API v2上的标记不可拖动

Android 谷歌地图API v2上的标记不可拖动,android,google-maps,Android,Google Maps,在我的应用程序中,我希望用户在谷歌地图中提供他们想要的地图。首先,我创建了一个带有按钮的活动,供用户打开谷歌地图: private Button.OnClickListener opengmap = new Button.OnClickListener() { public void onClick(View v) { isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_

在我的应用程序中,我希望用户在谷歌地图中提供他们想要的地图。首先,我创建了一个带有按钮的活动,供用户打开谷歌地图:

    private Button.OnClickListener opengmap = new Button.OnClickListener() {
        public void onClick(View v) {
        isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if (!isGPSEnabled && !isNetworkEnabled) {
            Toast.makeText(v.getContext(), v.getContext().getString(R.string.T1001_NoGPSDetection),  Toast.LENGTH_LONG).show();                 
        } else {
            strprovider = locationManager.getBestProvider(criteria, false);
            location = locationManager.getLastKnownLocation(strprovider);
        }

        **gmap = new GM001MapForAddress(v.getContext(), location.getLatitude(), location.getLongitude(), R.id.map);
        gmap.initialize();**

        }
    };
然后,我使用这个GM001MapForAddress来初始化google地图,目的是要有一个可拖动的标记:

public class GM001MapForAddress {
public Context context;
public GoogleMap googleMap;
public MarkerOptions markeroption;
public Marker marker;
public CameraUpdate center;


public Double latitude, longitude;
public Integer id;
public Activity activity;

public GM001MapForAddress(Context context, Double latitude, Double longitude, Integer id) {
    this.context = context;
    this.latitude = latitude;
    this.longitude = longitude;
    this.id = id;
}

public void initialize() {

    activity = (Activity) context;
    googleMap = ((MapFragment) activity.getFragmentManager().findFragmentById(id)).getMap();
    googleMap.setOnMapClickListener(clickmap);
    googleMap.setOnMarkerDragListener(dragmarker);
    //googleMap.setMyLocationEnabled(true);
    LatLng latlng = new LatLng(latitude, longitude);
    marker = googleMap.addMarker(new MarkerOptions().position(latlng).draggable(true));
    if (marker.isDraggable()) {
        System.out.println("HAHA " + latlng);
    }
    marker.setDraggable(true);
    googleMap.setOnMarkerDragListener(dragmarker);
    center= CameraUpdateFactory.newLatLng(new LatLng(latitude, longitude));
    CameraUpdate zoom=CameraUpdateFactory.zoomTo(15);
    googleMap.moveCamera(center);
    googleMap.animateCamera(zoom);
    googleMap.getFocusedBuilding();

}

public OnMarkerDragListener dragmarker = new OnMarkerDragListener() {

    @Override
    public void onMarkerDrag(Marker marker) {
        // TODO Auto-generated method stub
        System.out.println("here1!!");

    }

    @Override
    public void onMarkerDragEnd(Marker arg0) {
        // TODO Auto-generated method stub
        System.out.println("here2!!");
        LatLng dragPosition = arg0.getPosition();
        double dragLat = dragPosition.latitude;
        double dragLong = dragPosition.longitude;
        System.out.println("halatlng: " + dragLat + " " + dragLong);
        Log.i("info", "on drag end :" + dragLat + " dragLong :" + dragLong);
        arg0.setPosition(dragPosition);
        googleMap.addMarker(new MarkerOptions().position(dragPosition).draggable(true));

    }

    @Override
    public void onMarkerDragStart(Marker marker) {
        // TODO Auto-generated method stub
        System.out.println("here3!!");

    }
};

public OnMapClickListener clickmap = new OnMapClickListener() {

    @Override
    public void onMapClick(LatLng point) {
        // TODO Auto-generated method stub
        googleMap.animateCamera(CameraUpdateFactory.newLatLng(point));          
        System.out.println("latdflng: " + point);
    }
};
我有我的clickmap监听器工作,但dragmarker监听器从不工作。我整个周末都在做这个(我在亚洲)。所以,希望有人能帮我一把


提前感谢。

要启用拖动模式,您需要长时间单击标记,然后在按住的同时拖动


如果标记很小,如果你有像我一样笨拙的手指,那么在右点单击可能非常困难。

要启用拖动模式,你需要长时间单击标记,然后在按住的同时拖动


如果标记很小,如果你有像我一样笨拙的手指,那么在右点单击可能会非常困难。

你不能拖动标记,或者你只是在
dragmarker
?嗨,我不能拖动标记你不能拖动标记,或者你只是在
dragmarker
?嗨,我不能拖动markerforgot来说明我正在模拟器上进行测试,因此鼠标单击应该能够执行拖放操作。@kwytse在模拟器上测试地图是个坏主意。除此之外,你还需要用鼠标长时间点击。一两秒钟后,不移动鼠标,然后开始拖动。你完全正确。我真蠢!非常感谢!忘了提到我正在模拟器上测试,所以鼠标点击应该能够执行拖放操作。@kwytse在模拟器上测试地图是个坏主意。除此之外,你还需要用鼠标长时间点击。一两秒钟后,不移动鼠标,然后开始拖动。你完全正确。我真蠢!非常感谢!