【发布时间】:2015-06-16 23:15:56
【问题描述】:
我想在使用 Google Maps V2 Android API 显示的折线上实现 touchListener。
缩放级别:
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(lat_Lng, 5);
我尝试了以下折线触摸代码:
boolean onpoly = false;
for (Polyline polyline : mPolylines) {
for (LatLng polyCoords : polyline.getPoints()) {
float[] results = new float[1];
Location.distanceBetween(points.latitude, points.longitude, polyCoords.latitude, polyCoords.longitude, results);
if (results[0] < 100 ) {
onpoly = true;
Marker mark = map.addMarker(new MarkerOptions().position(points).title("AddEvent")
.snippet("" + addressaddexpense).icon(BitmapDescriptorFactory.fromResource(R.drawable.addicon)));
UtilsClass.dropPinEffect(mark);
}// end if..
} // end for loop
}// end for loop
if (onpoly == true) {
Toast.makeText(getActivity(), "Poly line detected", Toast.LENGTH_SHORT).show();
}// end if
它有效,但并不完美。 除非我放大,否则它不会检测到触摸事件,有时会迫使我在缩放之前点击地图超过 5 次以实现检测。
然后我将前面提到的if 条件从if (results[0] < 100 ) 更改为if (results[0] < 150 * (22 - map.getCameraPosition().zoom)) 并且功能得到了改进,但它仍然不能一直工作。
注意:我想在任何缩放级别检测折线触摸。
【问题讨论】:
-
我有以下问题希望您能提供比我目前更好的答案: 1. 发布的代码在哪里?是在
onMapClickListener中吗?dispatchTouchEvent?别的东西? 2.当你说要检测折线触摸时;您是指点击线路还是还想启用滑动或其他触摸手势? -
我在 onMapLongClickListener 中使用了这段代码..
-
好的,所以请尝试 onMapClickListener (长按实际上旨在执行您所描述的操作,只有在长按不带移动的项目后才会调用它)并查看我的答案: )
标签: android google-maps-api-2 google-polyline