Это неполный ответ на несколько неоднозначный вопрос.
Вы указываете «кривую линию», но не указываете функцию кривой, поэтому невозможно предоставить конкретную помощь по этому вопросу.
Если под "кривой линией" вы подразумеваете окружность вокруг точки, вас может заинтересовать класс SphericalUtil в android-maps-utils , который обеспечивает поиск "смещений" (computeOffset
) из точки - но это предполагает круг от центральной точки - что трудно применить к вашей неизвестной функции кривой.И конечно, сама карта предусматривает addCircle
.
Кроме того, чтобы определить, находится ли какая-либо одна точка на поверхности Земли в воде, вы можете использовать Google Maps Reverse Geocoding, как в этом ответе: https://stackoverflow.com/a/9644812/2711811,В нем упоминается использование поля «type», которое является «natural_feature» для воды.
Но этот ответ оставляет открытым вопрос о том, «как найти точку не в воде в 200 метрах от центральной точки» без неопределенности,итеративный подход - (т.е. продолжать выбирать случайные точки до тех пор, пока они не окажутся в воде - что не удастся, если центральная точка находится на 150-метровом острове).Чтобы решить эту проблему, вам нужно ограничить свое пространство точек сушей, что означает знание земли / моря.
Пример случайной точки в 200 метрах от центральной точки:
SphericalUtil.computeOffset(pickupPoint, 200, new Random(System.currentTimeMillis()).nextDouble * 360)
Не стесняйтесьдобавить больше деталей к вашему вопросу.