question: public static LatLng translatePoint ( LatLng point , double distance , double bearing ) { distance = distance / 1000d ; double lat = Math . toRadians ( point . latitude ) ; double lng = Math . toRadians ( point . longitude ) ; bearing = Math . toRadians ( bearing ) ; double Lat2 = Math . asin ( ( Math . sin ( lat ) * Math . cos ( distance / EARTH ) ) + ( Math . cos ( lat ) * Math . sin ( distance / EARTH ) * Math . cos ( bearing ) ) ) ; double Long2 = lng + Math . atan2 ( Math . sin ( bearing ) * Math . sin ( distance / EARTH ) * Math . cos ( lat ) , Math . cos ( distance / EARTH ) - ( Math . sin ( lat ) * Math . sin ( Lat2 ) ) ) ; Lat2 = Math . toDegrees ( Lat2 ) ; Long2 = Math . toDegrees ( Long2 ) ; return new LatLng ( Lat2 , Long2 ) ; }
target:  Returns the destination point from the starting point point having travelled the given distance on the given initial bearing (bearing normally varies around path followed).