Ответ 1
К сожалению, нет такой вещи, как прослушиватель кликов для полилинии, поэтому вам придется прислушиваться к кликам на карте и проверять, был ли клик зарегистрирован на любой из ваших полилиний. Вам также нужно будет сохранить ссылки на полилинии, которые вы добавили на свою карту.
Вот пример, который вычисляет, существует ли полилиния в 100 метрах от щелчка.
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);
}
}
}
}
});
Как только полилиния будет найдена, вы можете сохранить это расстояние как float minDistance;
, а затем прокрутите другие полилинии, чтобы проверить, есть ли более близкий.
Чтобы сделать это более точным, вы можете получить уровень масштабирования при каждом касании и умножить требуемое расстояние. Как 100 * (22 - mMap.getCameraPosition().zoom)
(вам нужно использовать большее расстояние при более низких уровнях масштабирования).
Удачи!