Я хочу реализовать touchListener
на полилинии, отображаемой с помощью API Google Maps V2 Android.
Уровень масштабирования:
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))
, а функциональность улучшилась, но все равно не работает все время.
Примечание. Я хочу обнаружить касание полилинии при любом уровне масштабирования.