This is an incomplete answer to a somewhat ambiguous question.
You indicate "curve line" but don't specify the curve function so it's impossible to provide help specifically on that.
If by "curve line" you mean circle around a point then you may be interested in the SphericalUtil class in the android-maps-utils which provides for finding "offsets" (computeOffset
) from a point - but this assumes a circle from a center point - which is difficult to apply to your unknown curve function. And ofcourse the map itself provides for addCircle
.
Also, to determine if any one point on the Earth's surface is in water you can use Google Maps Reverse Geocoding as in this answer: https://stackoverflow.com/a/9644812/2711811 . It mentions using 'type' field which is 'natural_feature' for water.
But this answer leaves open the general issue of "how to find a point not in water 200 meters from a center point" without an indeterminate, iterative approach - (i.e. keeping picking random points until not in water - which fails if the center point is on a 150-meter island). To solve this you'd have to limit your point space to land which means having knowledge of land/sea.
Example random point at 200 meters from center point:
SphericalUtil.computeOffset(pickupPoint, 200, new Random(System.currentTimeMillis()).nextDouble * 360)
Feel free to add more detail to your question.