Java 如何使谷歌地图标记可拖动
在我的Android项目中,我试图让谷歌地图的标记可以拖动,并捕捉拖动事件 以下是我使用的代码:Java 如何使谷歌地图标记可拖动,java,android,google-maps,Java,Android,Google Maps,在我的Android项目中,我试图让谷歌地图的标记可以拖动,并捕捉拖动事件 以下是我使用的代码: private BitmapDescriptor bitmapDescriptorFromVectorSourceLocation(Context context, @DrawableRes int vectorDrawableResourceId) { Drawable background = ContextCompat.getDrawable(context, R.dr
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)
。。但是标记是静态的,不能移动 你的代码在我这边有效。这个标记当然是可以拖动的。我建议您再次检查标记源位置和lat/lng是否有效,并重新构建应用程序并再次测试。如果您的标记仍然无法拖动,请发布您的完整代码和可能出现的任何错误,因为从我的立场来看,您的代码是很好的。