我想在使用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))
,功能得到改善,但仍然不总是有效。
注意:我希望在任何缩放级别下都能检测到折线触摸。
onMapClickListener
中吗?还是在dispatchTouchEvent
中?还是其他地方?