在我的Android项目中,我试图将Google地图的标记设为可拖动并捕获拖动事件。
这是代码正在使用:
private BitmapDescriptor bitmapDescriptorFromVectorSourceLocation(Context context, @DrawableRes int vectorDrawableResourceId) {
Drawable background = ContextCompat.getDrawable(context, R.drawable.marker_source_location);
background.setBounds(0, 0, background.getIntrinsicWidth(), background.getIntrinsicHeight());
Drawable vectorDrawable = ContextCompat.getDrawable(context, vectorDrawableResourceId);
vectorDrawable.setBounds(40, 20, vectorDrawable.getIntrinsicWidth() + 40, vectorDrawable.getIntrinsicHeight() + 20);
Bitmap bitmap = Bitmap.createBitmap(background.getIntrinsicWidth(), background.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
background.draw(canvas);
vectorDrawable.draw(canvas);
return BitmapDescriptorFactory.fromBitmap(bitmap);
}
public void onSourceLocationSelected(double sourceLocationLat, double sourceLocationLang) {
LatLng sourceLocation = new LatLng(sourceLocationLat, sourceLocationLang);
mMap.setOnMarkerDragListener(new GoogleMap.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);
mMap.animateCamera(CameraUpdateFactory.newLatLng(arg0.getPosition()));
}
@Override
public void onMarkerDrag(Marker arg0) {
// TODO Auto-generated method stub
Log.i("System out", "onMarkerDrag...");
}
});
mMap.addMarker(new MarkerOptions().position(sourceLocation).draggable(true)
.title("Source Location")
.icon(bitmapDescriptorFromVectorSourceLocation(this, R.drawable.marker_source_location))
.draggable(true));
float zoomLevel = (float) 15.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sourceLocation, zoomLevel));
}
如您所见,我已经为标记使用了自定义位图,然后尝试捕获拖动事件,还向标记选项中添加了.draggable(true)
..但是标记只是静态的,可以不能感动!!