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在模拟器上测试地图是个坏主意。除此之外,你还需要用鼠标长时间点击。一两秒钟后,不移动鼠标,然后开始拖动。你完全正确。我真蠢!非常感谢!