una sacar polilinea para irregular hatch figura etiqueta con como comando calcular agregar android google-maps polyline

android - sacar - Cómo detectar un clic en una polilínea



como sacar el area de un hatch en autocad (3)

Lamentablemente, no existe un oyente de clic de polilínea, por lo que deberá escuchar los clics en el mapa y comprobar si se registró un clic en cualquiera de sus polilíneas. También deberá guardar referencias a las polilíneas que agregó a su mapa.

Aquí hay un ejemplo que calcula si hay una polilínea a 100 metros del clic.

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override public void onMapClick(LatLng clickCoords) { for (PolylineOptions polyline : mPolylines) { for (LatLng polyCoords : polyline.getPoints()) { float[] results = new float[1]; Location.distanceBetween(clickCoords.latitude, clickCoords.longitude, polyCoords.latitude, polyCoords.longitude, results); if (results[0] < 100) { // If distance is less than 100 meters, this is your polyline Log.e(TAG, "Found @ "+clickCoords.latitude+" "+clickCoords.longitude); } } } } });

Una vez que se encuentra una polilínea, puede guardar esa distancia como float minDistance; y luego recorre otras polilíneas para verificar si hay una más cercana.

Para hacer esto más preciso , puedes obtener el nivel de zoom con cada toque y multiplicar la distancia requerida. Al igual que 100 * (22 - mMap.getCameraPosition().zoom) (necesita utilizar una distancia mayor con niveles de zoom más bajos).

¡Buena suerte!

Si hay una polilínea en googlemap y se realiza un clic en el mapa, ¿cómo puedo verificar si ese clic estaba en la polilínea o en otro lugar?

Polyline line = googleMap.addPolyline(new PolylineOptions() .add(new LatLng(51.2, 0.1), new LatLng(51.7, 0.3)) .width(5) .color(Color.RED)); googleMap.setOnMapLongClickListener(new OnMapLongClickListener() { } });


La API de Google Maps más reciente ahora incluye oyentes de clic de polilíneas. Necesita usar 8.4+. En archivo gradle:

compile ''com.google.android.gms:play-services-maps:8.4.0

Setup map polyline listener:

googleMap.setOnPolylineClickListener(new GoogleMap.OnPolylineClickListener() { @Override public void onPolylineClick(Polyline polyline) { //do something with polyline } });

Polyline debe poder hacer clic para que el oyente pueda funcionar.

PolylineOptions line = new PolylineOptions(); //add path points, set colour, etc. here Polyline polyline = googleMap.addPolyline(line); polyline.setClickable(true);


La solución anterior no funciona correctamente. Especialmente si tenemos una gran distancia entre dos puntos de polilínea.

Respondí esta pregunta: Polilíneas seleccionables Google Maps API Android

Podemos modificar el código anterior de esta manera:

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override public void onMapClick(LatLng clickCoords) { for (PolylineOptions polyline : mPolylines) { if (PolyUtil.isLocationOnPath(clickCoords, polyline.getPoints(), true, 100)) { // user clicked on polyline } } } });