Android 在单次点击时拖动标记,而不是长点击
我在我的项目中有一个功能,我在地图上单击绘制一条多边形线,用户可以通过在任何新位置拖动标记来编辑该线 但我面临的问题是,当我使用onMarkerDragListener回调进行此操作时,只要长时间单击标记,此功能就会激活 我想要的是,用户只需点击一个标记并开始拖动,而不是按住标记1-2秒,同时我可以相应地更新地图上的多边形线 这就是我目前所做的:Android 在单次点击时拖动标记,而不是长点击,android,google-maps,google-maps-markers,polygon,onlongclicklistener,Android,Google Maps,Google Maps Markers,Polygon,Onlongclicklistener,我在我的项目中有一个功能,我在地图上单击绘制一条多边形线,用户可以通过在任何新位置拖动标记来编辑该线 但我面临的问题是,当我使用onMarkerDragListener回调进行此操作时,只要长时间单击标记,此功能就会激活 我想要的是,用户只需点击一个标记并开始拖动,而不是按住标记1-2秒,同时我可以相应地更新地图上的多边形线 这就是我目前所做的: @Override public void onMapClick(LatLng latLng) { Marker marker = mMap.
@Override
public void onMapClick(LatLng latLng) {
Marker marker = mMap.addMarker(new MarkerOptions()
.position(latLng)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_pointer))
.draggable(true));
marker.setTag(latLng);
markerList.add(marker);
latlngPoints.add(latLng);
drawPolygon(latlngPoints);
updateValueText();
}
mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
@Override
public void onMarkerDragStart(Marker marker) {
}
@Override
public void onMarkerDrag(Marker marker) {
updateMarkerLocation(marker, false);
}
@Override
public void onMarkerDragEnd(Marker marker) {
updateMarkerLocation(marker, true);
}
});
public void updateMarkerLocation(Marker marker, boolean calculate) {
LatLng latLng = (LatLng) marker.getTag();
int position = latlngPoints.indexOf(latLng);
latlngPoints.set(position, marker.getPosition());
marker.setTag(marker.getPosition());
drawPolygon(latlngPoints);
if (calculate)
updateValueText();
}
private void drawPolygon(List<LatLng> latLngList) {
if (polygon != null) {
polygon.remove();
}
PolygonOptions polygonOptions = new PolygonOptions();
polygonOptions.fillColor(COLOR_LINE);
polygonOptions.strokeColor(COLOR_POINT);
polygonOptions.strokeWidth(LINE_WIDTH);
polygonOptions.addAll(latLngList);
polygon = mMap.addPolygon(polygonOptions);
}
@覆盖
公共无效的点击(LatLng LatLng){
Marker Marker=mMap.addMarker(新MarkerOptions()
.位置(车床)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_指针))
.draggable(true));
标记器。设置标签(板条);
markerList.add(marker);
latlngPoints.add(latLng);
绘制多边形(latlngPoints);
updateValueText();
}
mMap.setOnMarkerDragListener(新的GoogleMap.OnMarkerDragListener(){
@凌驾
MarkerDragStart上的公共空白(标记){
}
@凌驾
MarkerDrag上的公共空白(标记){
updateMarkerLocation(标记,false);
}
@凌驾
MarkerDragend上的公共空白(标记){
updateMarkerLocation(标记,true);
}
});
public void updateMarkerLocation(标记,布尔计算){
LatLng LatLng=(LatLng)marker.getTag();
int位置=latlngPoints.indexOf(latLng);
latlngPoints.set(位置,marker.getPosition());
marker.setTag(marker.getPosition());
绘制多边形(latlngPoints);
如果(计算)
updateValueText();
}
私有void drawPolygon(列表latLngList){
如果(多边形!=null){
polygon.remove();
}
PolygonOptions PolygonOptions=新PolygonOptions();
多边形选项。填充颜色(颜色线);
多功能选择。strokeColor(颜色点);
多边形选项.行程宽度(线宽);
polygonooptions.addAll(拉丁英语);
多边形=mMap.addPolygon(多边形选项);
}
这是活动的屏幕截图:
另外,我想现在就在地图上添加多边形线之间的中点单击仅绘制一条多边形线,但我想在该线之间添加一个可绘制的中点,如果用户需要,该点也应可绘制
我看到了一些关于StackOverflow的问题,但没有任何想法或线索如何做一些问题下的答案是非常古老的,这些方法已经贬值了。
我读到一个答案,其中用户说onToucEvent call back可以实现这一功能,但没有解释我们如何实现这一功能